我的功能在所有托管环境中都无法正常运行。返回的数据采用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
答案 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 + ")");
}
});