SyntaxError:期望表达式,得到’)’

我已经被这个错误困住了几天,仍然无法弄清楚出了什么问题。 如果有人能指出我解决这个问题的正确方向,那将会很棒。

更新:当我在updateMsg()函数中注释“addMessages(xml)”时,我意识到错误消失了。 我如何让它工作呢?

错误: http //i.imgur.com/91HGTpl.png

码:

$(document).ready(function () { var msg = $("#msg"); var log = $("#log"); var timestamp = 0; $("#name").focus(); $("#login").click(function() { var name = $("#name").val(); if (!name) { alert("Please enter a name!"); return false; } var username = new RegExp('^[0-9a-zA-Z]+$'); if (!username.test(name)){ alert("Invalid user name! \n Please do not use the following characters \n `~!@#$^&*()=|{}':;',\\[\\]./?~@#"); return false; } $.ajax({ url: 'login.php', type: 'POST', dataType: 'json', data: {name: name}, success: function() { $(".login").hide(); } }) return false; }); $("#form").submit(function() { if (!msg.val()) { return false; } $.ajax({ url: 'add_message.php', type: 'POST', dataType: 'json', data: {message: msg.val()}, }) msg.val(""); return false }); window.setInterval(function () { updateMsg(); }, 300); function updateMsg() { $.post('server.php', {datasize: '1024'}, function(xml) { addMessages(xml); }); } function addMessages(xml) { var json = eval('('+xml+')'); $.each(json, function(i, v) { tt = parseInt(v.time); if (tt > timestamp) { console.log(v.message); appendLog($("
").text('[' + v.username + ']' + v.message)); timestamp = tt } }); } function appendLog(msg) { var d = log[0] var doScroll = d.scrollTop == d.scrollHeight - d.clientHeight; msg.appendTo(log) if (doScroll) { d.scrollTop = d.scrollHeight - d.clientHeight; } } });

稍微阅读eval可能会有所帮助。 看起来它没有做你认为它做的事情。

eval()是一个危险的函数,它执行它以调用者的特权传递的代码。

对于常见用例,eval()有更安全(和更快!)的替代方案。

看起来你要做的就是以JSON的forms从服务器获取数据。 您需要确保服务器返回有效JSON的内容,您可以在此处进行validation。 大多数服务器端编程语言都有一个库,可以将对象转换为JSON,使其成为一块蛋糕。 这是php的一个例子 。

在客户端,您需要更改var json = eval('(' + xml + ')'); to var json = JSON.parse(xml); 这将为您提供php / perl / python / etc对象的javascript版本。 如果它是一个数组,则可以使用for循环, Array.prototype.forEach或来自不同库的各种函数(例如$.each_.each

SyntaxError:期望表达式,得到’)’通常由类似的东西引起

 exeFunction(a,b,) 

看看你的表单提交函数ajax是否导致了这样的错误

 $("#form").submit(function() { if (!msg.val()) { return false; } $.ajax({ url: 'add_message.php', type: 'POST', dataType: 'json', data: {message: msg.val()}, <------- }) msg.val(""); return false }); 

JSON.stringify({datasize:’1024′})可以做到吗? 只是一个猜测