JQuery location.reload();阻止POST到数据库

时间:2013-06-19 06:00:53

标签: jquery

以下代码的目的是在数据库中添加新条目。没有location.reload(true);它工作正常。但是,我想重新加载页面。包括location.reload(true); line停止添加的新条目。有人有什么想法吗?在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);

});

2 个答案:

答案 0 :(得分:1)

试试这个,使用onload

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

或者您可以使用

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

onload中添加了两个XMLHttpRequest 2相同的onreadystatechange,而{{1}}自原始规格以来一直存在。

答案 1 :(得分: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()