8

Ajax 使用回调,因为它是A同步的。

我希望调用远程 URL 块,直到有答案,就像在 Ajax 中一样,但没有异步部分,或者我应该说我想进行 JAX 调用。

是否有任何技术可以使以下情况发生(使用 JQuery)(... 使用 JQuery 或其他任何东西的解决方案):

function get_data() {
    $.ajax({
        type : "POST",
        url : "/foo"
    }).done(function(data, textStatus, jqXHR) {
        return data;
    }).fail(function(jqXHR, textStatus) {
        return null;
    });
}

var data = get_data();
// process `data`

我只是想知道 - 想学习。

实际上,有时在回复之前阻止就可以了。我并不是说我希望浏览器阻止,只是脚本运行时。

4

1 回答 1

12

您可以async : false在使用 jQuery 时简单地设置布尔值(查看文档)。注意:从 jQuery 1.8 开始,不推荐使用 async: false 和 jqXHR ($.Deferred);您必须使用完成/成功/错误回调。

如果您不想使用 jQuery 或想知道幕后发生了什么,请阅读此.

xmlhttp.open("GET","ajax_info.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

想知道为什么你不希望它是异步的......

于 2012-08-31T11:00:04.013 回答