在尝试获取JSON时,我的回调函数没有触发。
$.ajax({
type:"GET",
dataType:'json',
url: myLocalURL,
data: myData,
success: function(returned_data) {
alert('success');
}
});
最奇怪的部分是:
有什么我想念的吗? IE7是否不处理某些字符,数据结构(我的数据没有任何非字母数字,但它有嵌套的JSON)?我已经使用了大量其他AJAX调用(即使在IE7中),但是除了这个调用之外。
此处返回的示例数据是:(这是一个结构完整的示例,意味着它只缺少一些第二层字段,但遵循这个确切的层次结构)
{"question":{
"question_id":"19",
"question_text":"testing",
"other_crap":"none"
},
"timestamp":{
"response":"answer",
"response_text":"the text here"
}
}
我完全不知所措。希望有人能够了解正在发生的事情......谢谢!
修改的 这是我正在使用的虚拟数据的SIMPLEST案例的副本......它仍然在IE7中不起作用。
{
"question":{
"question_id":"20",
"question_text":"testing :",
"adverse_party":"none",
"juris":"California",
"recipients":"Carl Chan"
}
}
我开始怀疑这是一个JSON问题......但我不知道它还能是什么。以下是我发现的其他资源可能是原因,但它们似乎也不起作用: http://firelitdesign.blogspot.com/2009/07/jquerys-getjson.html(Django默认使用Unicode,因此我认为这不会导致它)
有人还有其他想法吗?
答案 0 :(得分:2)
您提供的示例数据看起来没问题,但我强烈怀疑的是,这样的地方有一个未封闭的逗号:
"timestamp":{
"response":"answer",
"response_text":"the text here"
}, <------------
}
IE是唯一(正确)浏览此浏览器的浏览器。
如果不是这样,您是否可以显示完整的数据样本(或确认您显示的示例确实是完整样本)?
答案 1 :(得分:1)
您是否已经排除了缓存问题的可能性?
e.g。当myLocalURL
返回无效的json时,您使用IE7进行了测试。 IE7仍然缓存响应,因此它不起作用。尝试将这样的内容(例如,如果是php)添加到myLocalURL
或使myLocalURL
看起来像myLocalURL?random=123
,只是为了测试以确保它不是缓存内容
header("Cache-Control: no-cache, must-revalidate");
header("Expires: 0");
您是否返回了正确的内容类型标头? e.g。
header("Content-Type: application/json");
答案 2 :(得分:1)
我刚刚遇到了完全相同的问题。事实证明,IE7无法解析在响应主体中具有前导\ r \ n换行符的JSON响应。您删除{% load customfilter %}
的修复方法有效,因为您删除了此标记后面包含的新行。
另一种解决方法是删除新行以获取
{% load customfilter %}{ "question":{ "question_id":"{{question.id}}",
"question_text":"{{question.question_text|customfilterhere}}"
}
}