我在网页上使用jquery AJAX并使用async:false选项如下。我的客户网络很慢。当我尝试从服务器网页加载网页时速度很慢,所有控件都冻结了。这是“异步:假”吗?这是我的代码
function ajaxRequestWithNoArguments(url) {
return $.ajax({
url: urlForPhp + '/' + url,
data: '',
dataType: 'JSON',
async: false,
method: 'POST'
});
}
答案 0 :(得分:2)
当我尝试从服务器网页加载网页时速度很慢,所有控件都冻结了。那是" async:false"物?
是的,这正是您不应该使用async:false
的原因,它在非常具体的情况下使用,听起来就像您不需要它一样。使请求同步意味着浏览器将暂停程序执行(也冻结所有UI),直到请求完成,数据被加载并处理。在大多数情况下,您不需要使用默认的async:true。
function ajaxRequestWithNoArguments(url) {
return $.ajax({
url: urlForPhp + '/' + url,
data: '',
dataType: 'JSON',
method: 'POST'
});
}
返回promise对象是处理异步函数的便捷方法。在这种情况下,您将使用ajaxRequestWithNoArguments
,如下所示:
ajaxRequestWithNoArguments('/some/url').then(function(response) {
console.log('Data loaded', response);
});
答案 1 :(得分:-1)
function OpenAjax(link, form_id)
{
document.getElementById("page-wrapper").innerHTML = "";
$.ajaxSetup({ async: true });
$("#page-wrapper").load(link, function(){
$("#" + form_id).validator();
});
}
这是我的代码。我有同样的问题,并将其设置为true将修复它。将其设置为true时,可能会出现另一个问题。您的javascript代码将继续有效,如果您有响应文本,则必须告诉JQuery在响应后运行您的代码,如我的示例所示:
$("#" + form_id).validator();
此代码在响应后工作,但如果我以这种方式编写代码
function OpenAjax(link, form_id)
{
document.getElementById("page-wrapper").innerHTML = "";
$.ajaxSetup({ async: true });
$("#page-wrapper").load(link, function(){
//Code moved from this line
});
//Here
$("#" + form_id).validator();
}
$(“#”+ form_id).validator(); - 代码将在Ajax响应之前工作