1

下面代码的目的是将新条目添加到数据库中。没有 location.reload(true); 它工作正常。但是,我想重新加载页面。包括 location.reload(true); 行停止添加新条目。有人有什么想法吗?重新加载是否发生在 POST 请求有机会开展业务之前?请记住:没有那一行,它可以 100% 正常工作。

$('#submitNewLocationButton').click(function() {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function()
    {
        if(xhr.readyState == 4)
        {
            if(xhr.status == 200)
        {
            document.ajax.dyn.value = "Received: " + xhr.responseText;
        }
        else
        {
            document.ajax.dyn.value = "Error code: " + xhr.status;
        }
        }
    };

    var param0 = "city=" + $('input[id=newRowCellInput_0]').val();
    var param1 = "extension=" + $('input[id=newRowCellInput_1]').val();

    xhr.open("POST", "insert.php", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send(param0 + "&" + param1);

    $('#newRow').remove();
    $('#addNewLocationButton').removeAttr('disabled');
    $('#submitNewLocationButton').css('display', 'none');
    location.reload(true);

});
4

2 回答 2

1

试试这个,使用onload事件XMLHttpRequest

xhr.onload = function () {
     location.reload(true);
};

或者你可以使用

xhr.onreadystatechange = function (aEvt) {
  location.reload(true);
};

两者都是相同onload的,XMLHttpRequest 2onreadystatechange自原始规范以来一直存在。

于 2013-06-19T06:11:22.757 回答
1

为什么这么复杂?使用 jQuery,您可以通过更简单的方式实现您的目标 试试这个:

$.post("insert.php?"+$(form).serialize())
    .done(function(data) {
        alert("Data Loaded: " + data);
        location.reload(true);
    })
    .fail(function() {
        alert("Error!");
    });

不管怎样,看看jQuery.post()jQuery.ajax()

于 2013-06-19T07:06:41.470 回答