AJAX不同步

时间:2011-08-04 18:08:24

标签: javascript ajax asp.net-mvc-2

我在这里遇到了类似这个问题的问题: Javascript and AJAX, only works when using alert()

我在完成表单时有一个AJAX调用来更新数据库中的字段。但是,呼叫似乎没有到达控制器。当我发出警报时,它有效。我现在已经将它设置为同步因为这个问题,但即使这样,没有警报,它每隔5或6次只到达控制器大约1。这是AJAX位:

function finalize() {
    if (!confirm("Are you sure?"))
        return;

    $("#finalizebutton").attr('disabled', 'disabled');

    var request = new XMLHttpRequest();
    var url = "/Operation/Finalize/";
    request.open("GET", url, false);
    request.send();

    $("#otherformstuff").attr('disabled', 'disabled'); //a few disable calls
}

在控制方面我大概有:

public ActionResult Finalize()
{
    db.setfinalized(true);   //breakpoint here that only gets hit about 1 in 5 tests
    return Content("Finalized");
}

即使在那里有一个警报,它有时也不起作用。 奇怪的是,我给request.responseText发出警报,它给了我来自控件的响应,而没有控件实际上正在处理它... 对此有任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:1)

因为你告诉它是同步的。

你的问题在于这一行:

request.open("GET", url, false);

open方法有3个参数。方法,url和第三个是布尔值,告诉它请求是否应该是异步的。

只需将false更改为true,请求将为异步。

request.open("GET", url, true);

但你也可以用这一行替换整个XHR代码块。

$.get('/Operation/Finalize/');