使用Internet Explorer jquery Ajax响应“未定义”

我遇到了jquery ajax请求的情况。

 $(document).ready(function() { $.ajax({ type: "POST", async: false, cache: false, url: "/ajax/script.php", data: { display: 'user', user_id: '1'} }).done(function( msg ) { if (msg !== "") { alert(msg); } }); });  

使用Chrome和Firefox我通过脚本/ajax/script.php生成html代码使用IE8(我没有试过6,7和9+)我有Undefined

有人知道如何解决这个问题吗?

编辑:我正在使用jquery 1.7.2

返回application/json; charset=utf8的MIMEType application/json; charset=utf8 application/json; charset=utf8在IE8中为我造成了同样的行为。 将其更改为application/json; 让IE8神奇地开始运作。

好吧,因为你没有定义“msg”,所以它是未定义的。 done()需要一个函数,多个函数或者什么都不作为参数。

如果你想从你的ajax调用回调,你应该使用

  $.ajax({ type: "POST", async: false, cache: false, dataType: 'text', url: "/ajax/script.php", data: { display: 'user', user_id: '1'}, success: function(data) { // do something } }); 

编辑:我正在使用jquery 1.7.2,如果它可以帮助

我解决了更改代码的问题:

 response.setCharacterEncoding("UTF8"); 

至:

 response.setCharacterEncoding("UTF-8");