这是来源:
function updateMsg() {
$.post("AjaxChatServer.jsp",{ time: timestamp }, function(xml) {
alert("1");
$("#loading").remove();
addMessages(xml);
});
setTimeout('updateMsg()', 4000);
}
alert
功能不起作用,但在function(xml)
之外,alert
正常工作。
jQuery源代码有问题吗?
答案 0 :(得分:3)
变化:
setTimeout('updateMsg()', 4000);
为:
setTimeout(updateMsg, 4000);
另请注意,在发布的代码中,timestamp
为undefined
,您应将setTimeout
放在函数范围之外。
答案 1 :(得分:2)
如果您的成功回调未触发,则很可能是因为请求未成功。请参阅.post()文档。我建议使用功能更全面的.ajax()来更好地控制情况。
function updateMsg() {
// You must define timestamp
var timestamp = $.now();
$.ajax({
url: "AjaxChatServer.jsp",
type: "POST",
data: {
time: timestamp
},
success: function (xml, textStatus, jqXHR) {
$("#loading").remove();
addMessages(xml);
},
error: function (jqXHR, textStatus, errorThrown) {
// Handle error
alert(textStatus);
}
});
}
setTimeout(updateMsg, 4000);
答案 2 :(得分:0)
我想你可能有ajax的问题 - 某处出错。
尝试在post函数的末尾添加.error
和.success
以查看错误。
function updateMsg() { $.post("AjaxChatServer.jsp",{ time: timestamp }, function(xml) { alert("1"); $("#loading").remove(); addMessages(xml); }) .error(function(){ alert("error"); }) .success (function(){ alert("error"); );
答案 3 :(得分:0)
您的变量“timestamp”是否已声明?
尝试:
function updateMsg() {
var date = new Date(), timestamp = date.getTime();
$.post("AjaxChatServer.jsp",{ time: timestamp }, function(xml) {
alert("1");
$("#loading").remove();
addMessages(xml);
});
}