【发布时间】:2019-05-22 20:43:44
【问题描述】:
我已经被这个错误困住了几天,仍然无法弄清楚出了什么问题。如果有人能指出解决这个问题的正确方向,那就太好了。
更新: 当我在 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;
}
}
});
【问题讨论】:
-
我不精通 javascript,但你的第一个函数
};右括号后面有一个分号。不确定这是否会导致错误。 -
控制台日志
xml查看您返回的数据是什么 -console.log(xml); -
@Rasclatt 分号不会导致错误,但你是对的,在这种情况下不适合放置
};。如果您将匿名函数定义为变量,那么};是合适的。 (即var f = function(){};) -
是的,我在我的电脑上试过了,它没有抛出任何错误。
-
哦,我明白了。你打电话给
eval('(' + xml + ')')。xml必须为空字符串。它来自哪里,你想用它做什么?eval通常用于运行一段代码,通常不是一个好主意。您希望server.php提供什么样的数据?
标签: javascript jquery