2013-03-26 71 views
0

我需要一些帮助。我使用jQuery来引起Ajax回调:使用POST方法的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"]

请协助解决此问题。

在此先感谢

也许我只想补充一点,我想进行回传,但保持所有控制值,因此该行:

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

但第二回发后(上drpControl的变化)字段值被清除,我假设这与IE浏览器不能满足长查询字符串,我已经在Chrome中测试它,它工作完美,但不是IE浏览器,我需要它为IE 8工作。有什么建议么?

回答

1
在内容类型

只是添加此

contentType: "application/json" 

指定的编码为JSON有些多余,因为用于JSON的默认编码是UTF-8。因此,在这种情况下,接收服务器显然很高兴知道它正在处理JSON,并假定默认情况下编码为UTF-8,这就是为什么它可以使用或不使用标头。

的contentType(缺省: '应用/ X WWW的窗体-urlencoded;字符集= UTF-8') - 当发送数据到服务器时,使用该内容类型。默认是“application/x-www-form-urlencoded; charset = UTF-8”,这对大多数情况来说都很好。如果明确地将内容类型传递给$ .ajax(),那么它将始终发送到服务器(即使没有发送数据)。如果未指定字符集,则会使用服务器的默认字符集将数据传输到服务器;你必须在服务器端正确解码。


注意这样

data: "{'drpControl' : " + $(".drpControl").val()+ "}", 
+0

感谢您的迅速反应肯定,但传递数据,但这个DIS不起作用 – johnnie 2013-03-26 05:46:02

+0

@johnnie - 已经尝试了眼前这个“的contentType:‘应用/ JSON’” .. – 2013-03-26 05:48:30

+0

是的,我有,但它仍然得到Request.Form [“drpControl”]为空 – johnnie 2013-03-26 05:51:00