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
!
你必须记住这些位置。