每次我的页面加载时,我都应该创建一个数据表(也是一个jquery插件) 但是当我获取内容时,使用.ajax或.getJSON总是直接进入错误函数,甚至没有告诉我回调内部出了什么问题
$.ajax({
cache: false,
type: "POST",
url: oSettings.sAjaxSource,
data: {'newdate' : date},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(json) {
console.log('retrieving json data');
},
error: function() {
console.log("An error has occurred. Please try again.");
}
});
这是为了安全目的而剥离回调的实际代码......
这在firefox中运行正常,它实际上执行回调函数的内容 但IE只是失败并继续编写我的日志
我已经读过很多关于IE的JSON调用失败的主要原因是只要有尾随逗号或只是格式错误的JS
但我已经使用了JSONLint并验证了我的json对象是有效的:(
答案 0 :(得分:1)
试试这个
data: '{"newdate" : "' + date + '"}',
更好的选择是使用json2.js来确保存在有效的JSON实现,然后在调用ajax之前序列化数据
var postData = JSON.stringify(data);
...
data: postData,
...
不要依赖jquery为你做这件事。
答案 1 :(得分:1)
由于您将contentType设置为application / json,我假设您正在调用ASMX ScriptService或Page Method。在那种情况下,Sky Sanders的建议是正确的。您必须将数据参数作为JSON字符串提供;否则jQuery会错误地将对象序列化为key = value& key = value pairs。
然而,要记住的另一件事是IE在JavaScript代码尝试使用控制台对象时抛出错误,除非开发工具(我相信控制台本身)已经打开过该代码运行。当涉及console.log时,这通常是IE特定问题的原因。