我有一个非常简单的代码:
$.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"
答案 0 :(得分:7)
我怀疑这是你的问题:
Content-Type text/html; charset: UTF-8
该值格式不正确(charset错误后的':')并且IE9不喜欢它,但是默默地失败而不是说有用的东西。试试这个:
Content-Type: text/html;charset=utf-8
答案 1 :(得分:1)
我尝试了一切来解决在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页面中设置如下:
<?php
header("Content-type: text/html; charset=utf-8");
echo ('stuff to do');
?>
用这种方式对我来说它就像一个魅力!
答案 2 :(得分:0)
试试这个:
$.ajax({
cache: false,
dataType: 'html',
complete: function(data){
console.log(data);
},
success: function(data){
console.log(data);
},
url: 'http://follows.pl/pages/ajaxtest'
});
success: function (data, textStatus, jqXHR)
对象是third
参数。
你实际上通过访问那里不存在的属性来响应数据。
也在完整的功能
complete: function (jqXHR, complete_textStatus)
这里的对象是first
地方!
你必须记住这些位置。