javascript - MVC 和 jQuery 和 Ajax : Wait for JavaScript to be loaded

标签 javascript jquery ajax model-view-controller

我正在使用 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/

相关文章:

javascript - 在我的案例中如何隐藏和显示 div 边框线?

javascript - 隐藏 Chart.js 中的所有标签和工具提示并使其非常小

javascript - 如何禁用 HTML5 YouTube iframe 视频的上下文菜单

javascript 一次性实现更多功能

JavaScript/jQuery : Why is my increment not working?

javascript - 在 ajax 请求中填充数据字符串

javascript - 将字母数字变量传递给 JQuery Ajax

jquery - 垂直和水平移动图像

ajax - 你会如何在 django 中实现聊天功能?

ajax - ASP MVC-3 : Problems updating the data of an AJAX form after making a post