jquery对话框暂停一个类似alert()的脚本

jquery dialog pause a script like alert()

本文关键字:alert 脚本 一个 对话框 jquery 暂停      更新时间:2024-02-16

我有下一个javascript代码:

function getLetterOfResponsibilityNote(dialogNoteLink, visitCountryName) {
        $.ajax({
            type: "GET",
            url: "/Admin/Applications/GetLetterOfResponsibilityNote/?selectedCountryName=" + visitCountryName,
            cache: false,
            success: function(data) {
                if (data != "") {
                    dialogNoteLink.dialog();
                    dialogNoteLink.attr("title", "Letter Of Responsibility Note for " + visitCountryName);
                    dialogNoteLink.html("<p>" + data + "</p>");
                }
            }
        });
    }

例如,我想调用它5次,并从服务器获取数据,然后我会在对话框中显示它。但我得到了一个Jquery UI对话框,其中包含消息。问题是,当对话框打开时,脚本不会暂停。

如果我写而不是:

dialogNoteLink.dialog();
dialogNoteLink.attr("title", "Letter Of Responsibility Note for " + visitCountryName);
dialogNoteLink.html("<p>" + data + "</p>");

使用alert()-效果很好!

我该如何解决这个问题?

这就是JavaScript警报的工作方式。如果要让调用等待对话框关闭,则必须在对话框关闭后在回调中进行后续调用。你应该这样做-

var arrayofNotesAndCountryNames = [{
 "dialogNoteLink" : link1,
 "visitCountryName" : "country1"
},{
 "dialogNoteLink" : link2,
 "visitCountryName" : "country2"
},{
 "dialogNoteLink" : link3,
 "visitCountryName" : "country3"
}];    
var currentIndex = 0;
function getLetterOfResponsibilityNote() {
var dialogNoteLink = arrayofNotesAndCountryNames[currentIndex].dialogNoteLink;
var visitCountryName = arrayofNotesAndCountryNames[currentIndex].visitCountryName;
            $.ajax({
                type: "GET",
                url: "/Admin/Applications/GetLetterOfResponsibilityNote/?selectedCountryName=" + visitCountryName,
                cache: false,
                success: function(data) {
                    if (data != "") {
                        dialogNoteLink.dialog({close : function(){ 
                             currentIndex++;
                             if (currentIndex < arrayofNotesAndCountryNames.length){
                                  getLetterOfResponsibilityNote();
                             }
                        }
});
                        dialogNoteLink.attr("title", "Letter Of Responsibility Note for " + visitCountryName);
                        dialogNoteLink.html("<p>" + data + "</p>");
                    }
                }
            });
        }
getLetterOfResponsibilityNote();

对话框应该从查询回调到服务器显示。

JQuery上没有阻塞功能或对话框。