我正在构建一个线程消息系统。我使用AJAX将parent_id发送到检索线程的php文件(许多消息具有相同的parent_id)
在ajax中,我发送了parent_id
data:{
parent_id: $(this).data('id'),
ajax: 'true'
},
我在php文件中使用这个parent_id,使用一个查询检索一些行,然后用它传回来:
$ret_msg_query_result=mysql_query($retrive_query);
while ($retrieved_msg_fetched=mysql_fetch_assoc($ret_msg_query_result))
{
echo json_encode($retrieved_msg_fetched) . "\n";
}
然后回到Ajax:
$(document).ready(function() {
$(".msgsRow li.msg_subject,.msgsRow li.msg_content").click(function() {
$.ajax({
type: 'POST',
url: AJAX_URL+"front/RetrieveMsg.php",
data:{ parent_id: $(this).data('id'), ajax: 'true' },
success: function(data) {
var strLines = data.split("\n");
for (var i in strLines) {
var obj = JSON.parse(strLines[i]);
console.log(obj.id);
}
}
});
});
});
我有这种方式(拆分)将每行转换为Stackoverflow Sending/Parsing multiple JSON objects上的帖子中的对象
该函数可以正确检索消息的ID,甚至可以检索整行。但是我得到了
“未捕获的SyntaxError:意外的输入结束”
并指向console.log(obj.id);
之前的行我搜索了StackOverflow这个错误,它通常会出现错过一个右括号,但我可以找到任何。
谢谢,
答案 0 :(得分:0)
您在此功能中缺少}
success: function(data){
var strLines = data.split("\n");
for (var i in strLines) {
var obj = JSON.parse(strLines[i]);
console.log(obj.id);
**}**
}
注意:删除4x *,那些不应该在那里:)
那应该解决它!
答案 1 :(得分:0)
我找出了问题......这是因为我正在使用" / n"这使得strLines类似于{row},{row},{row},
最后的逗号会导致意外结束。所以,我用一个计数器检查行数,如果它是最后一行,那么就不要插入" / n"
$counter=1;
while ($retrieved_msg_fetched=mysql_fetch_assoc($ret_msg_query_result))
{
if ($counter==mysql_num_rows($ret_msg_query_result))
{
echo json_encode($retrieved_msg_fetched);
}
else{
echo json_encode($retrieved_msg_fetched) . "\n";
$counter++;
}
}
感谢Limelights也为您提供帮助:)
答案 2 :(得分:0)
当我忘记从我的php脚本中返回一些正常工作时,我得到了这个。我刚刚添加了这样的内容:
die (json_encode (array ('reponse'=>'Your script worked fine')));
在我的php脚本的末尾,这解决了它。您还可以使用“回复”#39;检查它工作正常。