我已经被这个错误困住了几天,但仍然无法弄清楚出了什么问题。如果有人能指出我解决这个问题的正确方向,那就太棒了。
更新 当我评论" addMessages(xml)"我意识到错误消失了。在updateMsg()函数中。我如何使它工作呢?
错误: 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;
}
}
});
答案 0 :(得分:3)
这可能对read up on eval有所帮助。它看起来并不像你认为的那样。
eval()是一个危险的函数,它执行它以调用者的特权传递的代码。
另外
对于常见用例,eval()有更安全(更快!)的替代方案。
您尝试做的事情似乎是以JSON的形式从服务器获取数据。您需要确保您的服务器返回有效JSON的内容,您可以验证here。大多数服务器端编程语言都有一个库,它可以将一个对象变成JSON,从而使它变得轻而易举。 Here's an example for php
在客户端,您需要将$http
更改为var json = eval('(' + xml + ')');
这将为您提供php / perl / python / etc对象的javascript版本。如果它是一个数组,您可以使用var json = JSON.parse(xml);
循环,for
或来自不同库的各种函数(例如Array.prototype.forEach
或{{1)来遍历它}}
答案 1 :(得分:1)
SyntaxError:expect expression,got&#39;)&#39;通常由
之类的东西引起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
});
答案 2 :(得分:0)
如果要在单击时触发Java脚本或触发任何单击。有时缺少0会出现上述错误。
<a href="javascript:void(0);">delete</a>
答案 3 :(得分:-1)
JSON.stringify({datasize:&#39; 1024&#39;})可以做到吗?只是一个猜测