【发布时间】:2012-07-30 17:02:39
【问题描述】:
我的问题是,当我使用 jQuery ajax get 时,我在响应正文中获取数据,但它不会传递给成功函数。我怎样才能让它发挥作用?
我正在制作一个 ajax put,但它在 ie9 上不起作用(适用于其他浏览器)所以我像这样更改它只是为了测试:
$.ajax({
async : false,
type: 'PUT',
contentType: 'application/json',
url:updateUrl + "?_" + new Date().getTime(),
data: JSON.stringify(model),
cache: false,
dataType: "json",
dataFilter: function(data) {
var resp = eval('(' + data + ')');
return resp;
},
success: function(data, status, xhr) {
alert("success> " + data.property);
alert(typeof data);
r = resultResponse(data);
},
error: function(data, status, xhr) {
alert("error> " + data.responseText);
try {
r = error($.parseJSON(data.responseText));
} catch (err) {
//Handle error
}
}
});
数据警告为未定义。我的放置数据发送正确,我的服务器端运行良好并向客户端发送响应但是我得到未定义而不是数据。经过一些测试,我意识到了问题:
当我在 ie 9 处捕获网络通信数据包时,响应正文就是我想要的。但是成功函数无法处理它。如果需要,我可以提供有关我的服务器的更多信息(当我将数据写入响应时,我可以使其工作,而不是在 Java 中使用 jackson json 映射器 - 它正在工作,唯一的区别是响应中不包含工作版本标题: 核心价值 内容类型 application/json;charset=UTF8 )
我认为问题可以在客户端处理,我认为不是服务器端。 有什么想法吗?
编辑:我试过那种风格:
$.ajax({url: "/url",
dataType: "text",
success: function(text) {
json = eval("(" + text + ")");
// do something with JSON
}
});
但是响应头仍然是:
键值 内容类型 application/json;charset=UTF8
【问题讨论】:
-
您不小心在问题标题中使用了动词。
标签: ajax internet-explorer jquery cross-browser