我有一个按钮的onclick设置为使用以下函数EditContact。此函数设置jquery对话框,从服务器获取数据并显示它。一切正常,但我想让它更好地工作。现在,空白对话框会弹出代码所需的时间并从服务器获取内容,然后对话框将填充内容。我的问题是如何才能在收到内容之前弹出对话框。
function EditContact() {
$('#editContactView').dialog({
modal: true,
width: 'auto',
position: ['top', 'center'],
resizable: false,
autoOpen: false,
open: function (event) {
var szAction = "Content url for this example";
$(this).load(szAction,
function (response, status, xhr) {
$('#editContactView').dialog('open');
return false;
});
}
});
$('#editContactView').dialog('open');
}
答案 0 :(得分:1)
您正在调用.dialog('open')
两次:在代码的末尾和加载的回调中。
由于JavaScript是异步的,它在接收数据之前最后会运行第$('#editContactView').dialog('open');
行。
删除此行应该可以解决问题。
答案 1 :(得分:1)
我认为你应该能够从根本上改变你的内容,并在$()。load()完成时打开对话框。这样的事情可能会这样做:
function editContact() {
var szAction = "Content url for this example";
$(this).load(szAction, function (response, status, xhr) {
$('#editContactView').dialog({
modal: true,
width: 'auto',
position: ['top', 'center'],
resizable: false
});
});
}
编辑: 注意我删除了{autoOpen:false}。这将创建它并在收到内容后一次性打开它。