我使用的是ASP.NET MVC和jQuery,我通過Ajax加載了一個PartialView。一個獨立的JavaSriptFile屬於這個PartialView。成功時,將返回html插入到DOM中。在JavaScript中,一些東西已經完成,並且可能需要一點時間。加載的內容然後顯示在對話框中。MVC&jQuery&Ajax:等待JavaScript被加載
簡化代碼:
1 $.ajax({
2 url: /user/edit,
3 dataType: 'html',
4 data: { id: 1 },
5 success: function (htmlCode) {
6 $('#dialogEditUser').html(htmlCode);
7 $('#dialogEditUser').dialog('open');
8 });
9 };
此代碼的工作,有時沒有,這取決於PartialView的JavaScript的速度有多快執行。所以有時候,對話框不會打開。所以我改行號7:;
7 setTimeout(function() { $j('#dialogEditUser').dialog('open') }, 250);
現在一切工作正常。但是這個「黑客」並不是很合適。我如何檢查PartialView的JavaScript是否已經在加載的內容上執行?是否有可能沒有辦法返回一個完全呈現PartialView(這樣的JavaScript已經執行,我得到了AjaxCall的回報?
這就是我一直在尋找。事實上,我已經嘗試過那個。但是,部分視圖中的js-File是由jQuery.getscript()加載的,默認情況下它的async屬性爲true。所以我將這個調用改爲jQuery.ajax()並將false設置爲異步,但我不必更改原始的ajax調用。所以最後,我有一個ajax調用選項async = false包裝在一個ajax調用選項async = true。 問題:你如何解決這類問題? – iappwebdev