我需要一些帮助。我使用jQuery导致ajax回调:
function TestingCallback(controlId) {
if (controlId == 'drpControl') {
var options = {
type: "POST",
url: "Main.aspx",
data: { drpControl: $(".drpControl").val() },
//contentType: "application/json; charset=utf-8",
//cache: false,
success: function (data) {
},
complete: function (jqXHR, status) {
formData = $("#form1").serialize();
window.location = "Main.aspx?" + formData;
ShowLoadingBar();
return false;
}
};
var resp = $.ajax(options);
}
}
后端我得到的数据如下:
Request.Form["drpControl"]
,效果很好。
但是,只要我将此行添加到回调选项:contentType: "application/json; charset=utf-8",
,我就会为Request.Form["drpControl"]
获取null值。
请协助解决这个问题。
提前致谢
我可能只是补充说我试图引发回发但保留所有控制值,因此这一行:
formData = $("#form1").serialize();
window.location = "Main.aspx?" + formData;
但是经过第二次回发(在更改drpControl时)字段值被清除,我假设这与IE无法满足长查询字符串有关,我已经在Chrome中测试了它并且它的工作完美,但是不是IE,我需要它为IE 8工作。有什么建议吗?
答案 0 :(得分:1)
在内容类型中添加此内容
contentType: "application/json"
为JSON指定编码有点多余,因为JSON的默认编码是UTF-8。因此,在这种情况下,接收服务器显然很高兴知道它正在处理JSON并且假设默认情况下编码是UTF-8,这就是为什么它可以使用或不使用标头。
contentType(默认值:'application / x-www-form-urlencoded; charset = UTF-8') - 将数据发送到服务器时,请使用此内容类型。默认为“application / x-www-form-urlencoded; charset = UTF-8”,这在大多数情况下都适用。如果您明确地将内容类型传递给$ .ajax(),那么它将始终发送到服务器(即使没有数据发送)。如果未指定charset,则使用服务器的默认字符集将数据传输到服务器;你必须在服务器端适当地解码它。
请注意,但要传递这样的数据
data: "{'drpControl' : " + $(".drpControl").val()+ "}",