Jquery ajax dataType指定为json,数据解析出错

qq1303710309 2016-06-16 12:09:08
jquery版本为1.7.1

搜索的结果几乎都是jquery1.4版本后json要求更严了,但使用php json_encode函数生成的json应该是完全符合要求的。


jquery请求代码:

$.ajax({
type: "POST",
url: "goods_view.php",
data: {"act": "delete", "goods_id": info.goods_id, "view_id": info.view_id},
dataType: "json",
success: function (data, textStatus) {
console.log(data, textStatus);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest, textStatus, errorThrown);
}

});


php代码:

exit(json_encode(array("a" => "b")));



error,输出:Object {readyState: 4, responseText: "{"a":"b"}", status: 200, statusText: "OK"} "parsererror" Error: No conversion from text to json(…)



尝试在php设置各种ContentType,也是一样的结果。

php文件编码 为 UTF-8无BOM

...全文
1851 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lily11111111 2016-09-30
  • 打赏
  • 举报
回复
返回json的格式的时候最好都ob_end_clean下,php有个缓冲区,经常导致json串前面有个空格之流,在转换的时候容易报错;
  • 打赏
  • 举报
回复
嘿嘿,我知道如何解决。 但是分太低了。高点!~~~ 开玩笑的~! 你这种情况是要从text转到json对象的。 用eval方法。 var dataObj=eval("("+data+")"); data就是现在返回值(字符串)
AI全栈攻城狮 2016-06-17
  • 打赏
  • 举报
回复
楼主解决问题了吗?你的问题和我的很像
zhangsheng_1992 2016-06-16
  • 打赏
  • 举报
回复
php端试下用这个函数处理下你返回的数组http_build_query() 实在不行就eval转成对象处理吧
  • 打赏
  • 举报
回复
引用 3 楼 qq1303710309 的回复:
[quote=引用 2 楼 showbo 的回复:] alert(XMLHttpRequest.responseText); alert(XMLHttpRequest.responseText.length); 看输出什么,如果是{"a":"b"}和9,不会有问题。如果不是9那就输出了其他看不到的空白字符导致解析出错了
输出是{"a":"b"} 9,但是只要设置了dataType: "json",就会出错[/quote]不可能吧。。你去network选项卡看ajax请求返回的响应头是什么,可能是响应头有问题。。
qq1303710309 2016-06-16
  • 打赏
  • 举报
回复
引用 2 楼 showbo 的回复:
alert(XMLHttpRequest.responseText);
alert(XMLHttpRequest.responseText.length);

看输出什么,如果是{"a":"b"}和9,不会有问题。如果不是9那就输出了其他看不到的空白字符导致解析出错了




输出是{"a":"b"} 9,但是只要设置了dataType: "json",就会出错
  • 打赏
  • 举报
回复
alert(XMLHttpRequest.responseText); alert(XMLHttpRequest.responseText.length); 看输出什么,如果是{"a":"b"}和9,不会有问题。如果不是9那就输出了其他看不到的空白字符导致解析出错了

52,778

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧