使用Ajax的“意外的输入结束”

时间:2012-12-04 17:09:04

标签: php ajax arrays json row

我正在构建一个线程消息系统。我使用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这个错误,它通常会出现错过一个右括号,但我可以找到任何。

谢谢,

3 个答案:

答案 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;检查它工作正常。