jQuery remove()不起作用

时间:2013-02-16 11:26:20

标签: jquery xml ajax

这是来源:

function updateMsg() {
    $.post("AjaxChatServer.jsp",{ time: timestamp }, function(xml) {
        alert("1");
        $("#loading").remove();
        addMessages(xml);
    });
    setTimeout('updateMsg()', 4000);
}

alert功能不起作用,但在function(xml)之外,alert正常工作。
jQuery源代码有问题吗?

4 个答案:

答案 0 :(得分:3)

变化:

setTimeout('updateMsg()', 4000);

为:

setTimeout(updateMsg, 4000);

另请注意,在发布的代码中,timestampundefined,您应将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);
    });
}