我正在使用 ASP.NET MVC 和 jQuery,并通过 Ajax 加载 PartialView。一个单独的 JavaSriptFile 属于此 PartialView。成功后,返回的 html 会插入到 DOM 中。在 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);
现在一切正常。但这个“hack”不太合适。如何检查 PartialView 的 JavaScript 是否已在加载的内容上执行?是否有任何方法可以返回完全渲染的 PartialView (因此 JavaScript 已经在我获得 AjaxCall 返回的位置执行?
最佳答案
默认情况下ajax不会等待请求完成。
尝试将 async 选项设置为 false:
$.ajax({
url: /user/edit,
dataType: 'html',
async: false,
data: { id: 1 },
success: function (htmlCode) {
$('#dialogEditUser').html(htmlCode);
$('#dialogEditUser').dialog('open');
});
};
更多详细信息请参见docs
关于javascript - MVC 和 jQuery 和 Ajax : Wait for JavaScript to be loaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7930864/