Uncaught SyntaxError:意外的标识符和eval备选方案

时间:2012-12-03 11:49:32

标签: jquery json eval web-hosting

我的功能在所有托管环境中都无法正常运行。返回的数据采用JSON格式。我认为问题出在eval()上。我可以为eval()使用任何替代方法。请帮我调试一下或建议任何替代方法。

连续三天,我对这个错误表示不满(只出现在少数主机上但在其他主机上运行正常)

inLoad.php中的数据为

while($row=mysqli_fetch_array($sql)){
        $text=$row['mesg'];
        $fro=$row['fro'];
        $tocomr=$row['tocom'];
        $last_msg_id_db=$row_m['maxid'];


        $response=array();

        //$response['msg']=$table;
        $response['msg']=$text;
        $response['last_msg_id_db']=$last_msg_id_db;
        $final_response[]=$response;

    }
          echo json_encode($final_response);

AND数据以

的形式返回
    [{"msg":"hi<br>","last_msg_id_db":"173"}]
    main.php:96

    main.php:96
   [{"msg":"heloo<br>","last_msg_id_db":"174"}]

jquery函数如下。

function chat_com_one(id, name) {
$('#chatcom').show('fast');
(function chatcom_load_one(id, name) {

    $.ajax({
        type:"Post",
        url:"load.php",
        data:{
            tocom:id,
            last_msg_id:last_msg_id
        },


        success:function(data) {

            var json = eval(data);
            $.each(json, function(i, row) {
                $("#commidwin").append(row['msg']);
                last_msg_id = row['last_msg_id_db'];
            });
            setTimeout(chatcom_load_one(id, name), 500);
        },
        error:function(XMLhttprequest, textstatus, errorthrown) {
            alert("error:" + textstatus + "(" + errorthrown + ")");
        }




    });
}(id, name));
}

以下错误在Chrome的日志

中给出
Uncaught SyntaxError: Unexpected identifier main.php:95
 $.ajax.success main.php:95
fire jquery.min.js:974
self.fireWith jquery.min.js:1082
done jquery.min.js:7788
callback

1 个答案:

答案 0 :(得分:0)

请不要使用eval。只需将dataType设置为json,jQuery就会为您解码JSON。

$.ajax({
    type:"POST",
    url:"load.php",
    dataType:"json",
    data:{
        tocom:id,
        last_msg_id:last_msg_id
    },
    success:function(data) {
        var json = data;
        $.each(json, function(i, row) {
            $("#commidwin").append(row['msg']);
            last_msg_id = row['last_msg_id_db'];
        });
        setTimeout(chatcom_load_one(id, name), 500);
    },
    error:function(XMLhttprequest, textstatus, errorthrown) {
        alert("error:" + textstatus + "(" + errorthrown + ")");
    }
});