我有一个在.NET Framework 4.7上的Azure上运行的网站。在该网站中,我有一个表单,当填充并提交时,有一个使用JQuery和AJAX的脚本,该脚本从表单中获取数据并将其发送到我们的自定义API。
我已经在表单中添加了一个新字段。现在,当我单击提交按钮时,脚本会将其发送到我们的API。但是,该新字段始终为null。
但是当我manually调用F12中的脚本时,它可以正确获取数据,并且我们的API可以按预期为新字段获取值。但是,当我通过按钮触发它时,却没有。
我检查了我在Azure和F12时使用的是完全相同的代码。我已将动态缓存设置为0,并重新启动了网站,但无法解决问题。 WEBSITE_RUN_FROM_PACKAGE或WEBSITE_NODE_DEFAULT VERSION是否以任何方式对其产生影响?
或者是js引用了其他文件(最小文件还是其他文件)?我相信这个问题与JS无法为我提供新的领域有关,但是我不确定为什么在F12中可以很好地做到这一点时还是没有。
我也在使用Umbraco API,但我怀疑这是问题所在,因为API可以正确接收数据。
var model = {
FirstName: $("#member-register #user_FirstName").val(),
LastName: $("#member-register #user_LastName").val(),
PostCode: $("#member-register #user_PostCode").val()
};
$.ajax({
url: "/Umbraco/Api/Member/RegisterMember",
method: "POST",
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(model),
success: function (response) {
$("#register").modal('hide');
if (response.Success) {
// Clear the form fields otherwise it will be visible when register is clicked again.
$("#member-register #user_FirstName").val("");
$("#member-register #user_LastName").val("");
$("#member-register #user_PostCode").val("");
} else {
$("#registerFailure").modal('show');
}
},
error: function (response) {
$("#register").modal('hide');
$("#registerFailure").modal('show');
}
})
原来我们正在使用客户端依赖框架(https://github.com/Shandem/ClientDependency)。在Azure上引用的JS是一个旧的JS,我们必须在ClientDependency.config中更新该版本,以便它重新打包并使用最新版本。
<clientDependency version="20191028" fileDependencyExtensions=".js,.css" loggerType="Umbraco.Web.UI.CdfLogger, umbraco">