jquery如何接收数据库返回的JSON数据

baidu_35591835 2016-07-13 11:45:40
我是jquery异步传输的新手,请高手们多多指教

我用php页面从数据库取出了3条数据储存到$msglist变量中
然后 echo json_encode($msglist);
得到的JSON数据格式如下:

[{"con_id":"44","user_id":"17","rid":"1","gid":"0","pid":"0","qid":"3","fullname":"\u59da\u6d77\u7586","sex":"\u7537","tel":"13917047090","content":"pid\u5df2\u66ff\u6362\u4e86","ts_created":"2016-07-11 10:55:28","status":"D"},{"con_id":"45","user_id":"0","rid":"1","gid":"0","pid":"0","qid":"3","fullname":"\u59da\u6d77\u7586","sex":"\u7537","tel":"13917047090","content":"user_id\u5df2\u66ff\u6362\u6389\u4e86","ts_created":"2016-07-11 10:56:34","status":"D"},{"con_id":"46","user_id":"0","rid":"1","gid":"0","pid":"0","qid":"3","fullname":"\u59da\u6d77\u7586","sex":"\u7537","tel":"13917047090","content":"","ts_created":"2016-07-11 11:03:26","status":"D"}]

jquery文件代码如下:

function getnewmsg(){
var score = arguments[0] ? arguments[0] : 0;
$.ajax({
url : base.url+'index/getnewmsg',
type : 'POST',
dataType: "json",
cache : false,
timeout : 30000,
success : function (msglist){
var html = '';
for(var i in msglist){
var msg = $.parseJSON(msglist[i]);
html += '<li class="';
html += ' xiaomishu ';
html += '"><div class="chat_left"><img src="'+base.tpl+'images/level/level'+msg.gid+'.png"/></div><div class="chat_right"><div class="chat_right_top"><span><em>'+msg.fullname+'</em>['+msg.ts_created+']</span><div class="say">'+msg.content+'</div></div></div></li>';
}
$('#msg_list').append(html);
},
error : function (XMLHttpRequest, textStatus){
if(textStatus == 'timeout') getnewmsg(score);
else setTimeout(getnewmsg(score), 3000);
}
})
}

测试时Firebug出现了以下错误,请高手指教问题出在哪里
SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
...全文
202 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jio可 2016-07-13
  • 打赏
  • 举报
回复
引用 2 楼 baidu_35591835 的回复:
谢谢你,果然将 var msg = $.parseJSON(msglist[i]); 改成 var msg = msglist[i]; 后,读取数据成功! 真是太谢谢你了。 还有个疑问,请问,为什么已经是json对象了呢,看别人都是$.parseJSON(msglist[i])或eval('(' + msglist+')')转为对象的。 能简单解释一下吗?
返回的就是json数组,里面的对象肯定就是json对象了,如果是字符才需要去解析成json 对象 ps:"[{a:"001",b:"002"}]"这样才需要去解析成json数组, "{a:"000",b:"111"}"这样才需要去解析成json对象
baidu_35591835 2016-07-13
  • 打赏
  • 举报
回复
谢谢你,果然将 var msg = $.parseJSON(msglist[i]); 改成 var msg = msglist[i]; 后,读取数据成功! 真是太谢谢你了。 还有个疑问,请问,为什么已经是json对象了呢,看别人都是$.parseJSON(msglist[i])或eval('(' + msglist+')')转为对象的。 能简单解释一下吗?
jio可 2016-07-13
  • 打赏
  • 举报
回复
msglist[i]已经是json对象了,不需要再去解析

52,797

社区成员

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

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