1

我正在构建一个线程消息传递系统。我使用 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";    
}

然后回到阿贾克斯:

$(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,甚至检索整行。但我明白了

“未捕获的语法错误:输入意外结束”

它指向 console.log(obj.id); 之前的行

我在 StackOverflow 上搜索了这个错误,它通常显示为缺少右括号,但我找不到。

谢谢,

4

3 回答 3

0

}在此功能中缺少一个 on

success: function(data){
                var strLines = data.split("\n");
                for (var i in strLines) {
                    var obj = JSON.parse(strLines[i]);
                    console.log(obj.id);
                **}**
            }

注意:删除 4x*,那些不应该在那里 :)

那应该解决它!

于 2012-12-04T17:32:53.540 回答
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 的帮助:)

于 2012-12-05T09:37:01.880 回答
0

当我忘记从我的 php 脚本中返回一些东西时它工作正常时,我得到了这个。我刚刚添加了这样的内容:

die (json_encode (array ('reponse'=>'Your script worked fine')));

在我的 php-script 结束时,这解决了它。您也可以使用“响应”来检查它是否正常工作。

于 2015-03-11T17:39:21.857 回答