0

我需要一些帮助。我正在使用 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",,我就会得到一个 null 值Request.Form["drpControl"]

请协助解决这个问题。

提前致谢

我可以补充一点,我试图引起回发但保留所有控制值,因此这一行:

    formData = $("#form1").serialize(); 
   window.location = "Main.aspx?" + formData;

但是在第二次回发(更改drpControl)字段值被清除后,我假设这与IE无法满足长查询字符串有关,我已经在Chrome中对其进行了测试,它运行良好,但不是IE,我需要它来为 IE 8 工作。有什么建议吗?

4

1 回答 1

1

在内容类型中添加这个

contentType: "application/json" 

指定编码对于 JSON 来说有些多余,因为 JSON 的默认编码是 UTF-8。因此,在这种情况下,接收服务器显然很高兴知道它正在处理 JSON,并假设默认编码为 UTF-8,这就是它在有或没有标头的情况下工作的原因。

contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8') - 向服务器发送数据时,使用此内容类型。默认为“application/x-www-form-urlencoded; charset=UTF-8”,在大多数情况下都可以。如果您明确地将内容类型传递给 $.ajax(),那么它将始终被发送到服务器(即使没有发送数据)。如果没有指定字符集,数据将使用服务器的默认字符集传输到服务器;您必须在服务器端对此进行适当解码。


请注意,但要像这样传递数据

data: "{'drpControl' : " + $(".drpControl").val()+ "}",
于 2013-03-26T05:42:34.187 回答