我最近升级到1.5,功能,如:
function showData(id) {
$.get("/url/getdata", {id : id}, function(data) {
$("#dialogData").html(data);
$("#dialogData").dialog({width: 500, modal: true, zIndex:22000});
}, "json");
}
不再与添加1.5工作。
看着萤火虫,返回正确的数据,但功能在进入回调后中断。 一切都很简单。
我该如何解决这个问题?我读到了1.5版Ajax调用的变化,但通过我的项目我有超过一千次这样的调用 - >我甚至不能开始考虑全部搜索它们并改变它们,更不用说测试它的一切了。
编辑:奇怪的是,如果我把“text json”而不是“json”作为dataType,它就可以工作。编辑2:而不是返回json_encode($字符串),我试图返回json_encode(数组(“字符串”=> $字符串),而不是返回json_encode )),然后我做了$(元素).html(data.string)。 这也行不通,而且我用这个调用得到的JSON数据在jsonlint.com上是有效的
编辑3:尝试在json_encode输出之前设置标题,但没有奏效。到目前为止,唯一的解决方案是将数据类型设置为文本json。
所以......你正在使用JSON,但你试图直接输入到HTML?也许你的数据类型需要是HTML?我的猜测是你的服务器没有为你的数据类型输出适当的Content-Type头,而jQuery试图使用头来猜测内容类型是什么。 – 2011-04-12 14:02:07
不,我只是使用JSON传递来自PHP的数据。 PHP回应正确的JSON头文件和json_encodes。目前为止,它在1.4上效果很好。 – Swader 2011-04-12 16:05:16
是的,我知道PHP将正确编码该JSON,但您还需要调用'header('Content-Type:application/json');'这样jQuery就可以正确猜测您的数据类型。要么,要么你可以使用'$ .getJSON'。 – 2011-04-12 16:10:00