[英]“Unexpected end of input” using Ajax
我正在建立一个线程消息系统。 我使用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 发送/解析多个JSON对象的帖子
该函数可以正确检索消息的ID,甚至可以检索整行。 但是我明白了
“未捕获的SyntaxError:输入的意外结束”
它指向console.log(obj.id);之前的行。
我在StackOverflow上搜索了此错误,通常会出现缺少右圆括号的错误,但我找不到任何错误。
谢谢,
您在此函数中缺少}
success: function(data){
var strLines = data.split("\n");
for (var i in strLines) {
var obj = JSON.parse(strLines[i]);
console.log(obj.id);
**}**
}
注意:删除4x *,那些不应该在那儿:)
那应该解决它!
我发现了问题……这是因为我正在使用“ / 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的帮助:)
当我忘了从php-script返回正常工作时返回的内容时,我得到了这个。 我只是添加了以下内容:
die (json_encode (array ('reponse'=>'Your script worked fine')));
在我的php脚本的末尾,这解决了它。 您还可以使用“响应”来检查它是否工作正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.