我有以下javascript代码:
$.get("categories/json_get_cities/" + stateId, function(result)
{
//code here
}, 'json'
);
处理它的PHP代码基本上输出如下内容:
function json_get_cities($stateId)
{
//code here
echo json_encode(array('cities'=>$cities));
}
在firebug控制台中,我可以看到正在按预期进行ajax请求,收到200 OK响应,并返回包含城市的看似正确的JSON对象。但是由于某种原因,我传递给jquery的回调函数没有被调用。
即使在函数顶部加debugger
个电话,即
$.get("categories/json_get_cities/" + stateId, function(result)
{
debugger;
//code here
}, 'json'
);
不起作用。但是,如果我删除'json'的第三个参数,则调用该函数(但响应文本被视为纯文本而不是JSON对象)。
这是服务器返回的JSON响应:
{"cities":[{"id":"1613","stateId":"5","name":"Acton"}]}
有什么想法吗?
答案 0 :(得分:10)
您确认这是有效的JSON吗?在jQuery 1.4中,JSON解析以严格的方式完成,任何格式错误的JSON都会被拒绝并抛出parsererror。
在回调中尝试console.log(arguments)
进行调试。
另外,你说'json'是第四个参数,但它应该是第三个参数(如你的例子中所示)。
答案 1 :(得分:7)
使用此确保json有效...
答案 2 :(得分:3)
调试其中一些ajax问题的另一种方法是使用.ajax方法,将GET作为方法类型而不是.get方法传递。除了成功方法之外,这还允许您指定错误回调函数。
答案 3 :(得分:1)
请记住,JSON字段名称必须用引号括起来,例如在文件中编写json时要加载jquery的值。例如:
在代码中:
{
name: "value"
}
在JSON文件中:
{
"name": "value"
}