2013-11-20 56 views
0

我希望在JS調用完成之前禁用/阻止加載頁面。我明白,做到這一點的唯一方法是使用$.ajax像這樣:

$.ajax({ 
url: "/acme/confirm_authentication.html", 
async: false, 
cache: false, 
success: function(data) { 
    // loaded 
} 

目前,我加載部分頁面​​功能,像這樣:

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

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

    }).addClass('js-dialog')); 
} 

觀看演示:http://jsfiddle.net/SQDDD/1/

如何將此翻譯成$.ajax呼叫?

請記住,我使用​​的原因是,我只能加載部分網站(#lga)。

回答

1

asyc: false是(大部分時間)邪惡; - )

您可以嘗試如下所示:

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

要知道,你失去了可用的選擇功能,在負載

+0

@jbi感謝。爲什麼是'async:false'邪惡? – Alex

+0

@Alex,因爲它可能會凍結您的瀏覽器,並且可能會造成非常糟糕的用戶體驗。看到http://stackoverflow.com/q/7588994/1236044 – jbl

+0

@jbi我明白了。那麼在'.load()'上面使用'$ .ajax'沒有意義? – Alex

0

看看at this example

我有這個網站:

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

</body> 
... 

現在從阿賈克斯得到p元素:

$.ajax(
    { 
     url: 'http://jsbin.com/oFUMOtO/3/quiet', 
     type: "GET", 
     dataType: 'html', 
     success: function (data) 
     { 
      alert($("<div>").html(data).find("p").text()); //alerts bbb 

     } 
    });