jQuery.ajax() – IE9中返回的未定义数据

我有一个非常简单的代码:

$.ajax({ cache: false, dataType: 'html', complete: function(jqXHR){ console.log(jqXHR.responseText); }, success: function(data){ console.log(data); }, url: 'http://follows.pl/pages/ajaxtest' }); 

它返回ff,chrome和IE8中的一些文本,但在IE9中它显示两次“undefined”。

我在IE9中查看了开发人员工具,它显示了正常的响应,因此请求工作正常,响应很好,但变量未定义

回复标题:

 Response HTTP/1.1 200 OK Cache-Control no-cache Content-Type text/html; charset: UTF-8 Pragma no-cache 

响应

 string(4) "test" 

我怀疑这是你的问题:

 Content-Type text/html; charset: UTF-8 

该值未正确格式化(charset错误后的’:’)并且IE9不喜欢它,但是默默地失败而不是说有用的东西。 试试这个:

 Content-Type: text/html;charset=utf-8 

我尝试了一切来解决在IE浏览器上发布ajax的问题​​(例如添加到jquery ajax对象没有缓存,dataType,configType等等),但最后问题不是在ajax / javascript而是在PHP文件中:仅适用于IE浏览器,PHP文件必须以以下标头开头

 header("Content-type: text/html; charset=utf-8"); 

因此,您必须明确指出由于您的ajax调用而获得的php页面的内容类型

例如,假设一个名为one.html的html页面放置了你的javascript和一个名为two.php的php页面

在one.html中将javascript设置为

 var url = 'two.php'; $.ajax({ url: url, type: "POST", success: function(response){ alert(response) } }); 

在two.php页面中设置如下:

  

以这种方式对我来说它就像一个魅力!

试试这个 :

 $.ajax({ cache: false, dataType: 'html', complete: function(data){ console.log(data); }, success: function(data){ console.log(data); }, url: 'http://follows.pl/pages/ajaxtest' }); 

注意

在成功function

  success: function (data, textStatus, jqXHR) 

对象是third参数。

你实际上通过访问那里不存在的属性来响应数据。

也在完整的function

  complete: function (jqXHR, complete_textStatus) 

这里的对象是first

你必须记住这些位置。