使用POST方法的AJAX回调

时间:2013-03-26 05:40:11

标签: asp.net jquery

我需要一些帮助。我使用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工作。有什么建议吗?

1 个答案:

答案 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()+ "}",