我已经被这个错误困扰了几天,但仍然无法弄清楚出了什么问题。如果有人能给我指出解决这个问题的正确方向,那就太好了。
更新: 当我在 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($("<div/>").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;
}
}
});
最佳答案
这可能有助于read up on eval一点点。它看起来不像你想象的那样。
eval() is a dangerous function, which executes the code it's passed with the privileges of the caller.
还有
There are safer (and faster!) alternatives to eval() for common use-cases.
看起来您想要做的是以 JSON 形式从服务器获取数据。您需要确保您的服务器返回有效的 JSON,您可以对其进行验证 here 。大多数服务器端编程语言都有一个库,可以将对象转换为 JSON,使之变得轻而易举。 Here's an example for php .
在客户端,您需要将 var json = eval('(' + xml + ')');
更改为 var json = JSON.parse(xml );
这将为您提供 php/perl/python/etc 对象的 javascript 版本。如果它是一个数组,则可以使用 for
循环、Array.prototype.forEach
或来自不同库的各种函数(例如 )对其进行迭代$.each
或 _.each
。
关于javascript - 语法错误 : expected expression, 得到 ')',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29812338/