将.load()更改为$.ajax jQuery

将.load()更改为$.ajax jQuery,ajax,function,jquery,load,Ajax,Function,Jquery,Load,我想禁用/阻止加载页面,直到JS调用完成。我知道唯一的方法是使用$。ajax如下: $.ajax({ url: "/acme/confirm_authentication.html", async: false, cache: false, success: function(data) { // loaded } 目前,我正在加载一个包含.load()函数的部分页面,如下所示: var linkUrl = $('.js-dialog--on-load').attr('di

我想禁用/阻止加载页面,直到JS调用完成。我知道唯一的方法是使用
$。ajax
如下:

$.ajax({
 url: "/acme/confirm_authentication.html",
 async: false,
 cache: false,
 success: function(data) {
    // loaded
 } 
目前,我正在加载一个包含
.load()
函数的部分页面,如下所示:

var linkUrl = $('.js-dialog--on-load').attr('dialog-href')  + ' #lga';
showDialogWindow(linkUrl);

function showDialogWindow(linkUrl) {
    $('.container').append($("<div>").load(linkUrl, function(){

    }).addClass('js-dialog'));
}
var linkUrl=$('.js dialog--on load').attr('dialog-href')+'#lga';
showDialogWindow(链接URL);
函数showDialogWindow(链接URL){
$('.container')。追加($(“”)。加载(链接URL,函数(){
}).addClass('js-dialog');
}
请参见演示:

如何将其转换为
$.ajax
调用

请记住,我使用
.load()
的原因是,我只能加载网站的一部分(
#lga
)。

看一下:

我有这个html:

...
<body>
  <a href=""> aaa</a>
  <p>bbb</p>

</body>
...

asyc:false
通常是邪恶的;-)

您可以尝试以下方法:

function showDialogWindow(linkUrl) {
    $.ajax({
     url: linkUrl,
     async: true,
     cache: false,
     success: function(data) {
         $('.container').append($("<div>"+data+"</div>").addClass('js-dialog'));
     }
    });
}
函数showDialogWindow(linkUrl){
$.ajax({
url:linkUrl,
async:true,
cache:false,
成功:功能(数据){
$('.container').append($(“+data+).addClass('js-dialog'));
}
});
}

请注意,您丢失了加载中可用的选择器功能

@jbi谢谢。为什么
async:false
是邪恶的?@Alex,因为它可能会在很长一段时间内冻结您的浏览器,并提供非常糟糕的用户体验。见@jbi,我明白了。那么在
.load()
上使用
$.ajax
是没有意义的,对吗?@Alex有区别。请参阅加载文档中的“脚本执行”。加载是上述的实用方法。ajax用于一般情况。只要您想对行为有更多的控制,.ajax就非常有用。
function showDialogWindow(linkUrl) {
    $.ajax({
     url: linkUrl,
     async: true,
     cache: false,
     success: function(data) {
         $('.container').append($("<div>"+data+"</div>").addClass('js-dialog'));
     }
    });
}