Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从js循环打开Jquery ui对话框_Javascript_Jquery_Ajax_Sync_Jquery Dialog - Fatal编程技术网

Javascript 从js循环打开Jquery ui对话框

Javascript 从js循环打开Jquery ui对话框,javascript,jquery,ajax,sync,jquery-dialog,Javascript,Jquery,Ajax,Sync,Jquery Dialog,我正在用JQuery开发一个网站 我遇到了以下问题: 在循环中遍历一个数组,每个值都被发送到一个函数,该函数通过Ajax将其发送到服务器。 成功后,JQuery-Dialog中会生成一条消息,其中按钮和按钮函数由服务器返回的值进行调整 问题是,JQuery对话框仅在循环结束时触发,因此我无法判断哪个消息引用了哪个值 循环函数: $('#List').find('option').map(function () { semelO= $(this).val(); **getData*

我正在用JQuery开发一个网站 我遇到了以下问题:

在循环中遍历一个数组,每个值都被发送到一个函数,该函数通过Ajax将其发送到服务器。 成功后,JQuery-Dialog中会生成一条消息,其中按钮和按钮函数由服务器返回的值进行调整

问题是,JQuery对话框仅在循环结束时触发,因此我无法判断哪个消息引用了哪个值

循环函数:

$('#List').find('option').map(function () {
    semelO= $(this).val();
    **getData**("Insert_hashala", "Inserthashala", false, "***setAlert***", false, "inserthasala", ["semelO", semelO], null, "RefershLendGrid", null);
});
函数签名:

function **getData**(procAlias, funcName, empytFields, ***onSuccessEvent***, isAsync, dataGroup, moreValues, onFailure, setDisplay, onFailureEvent)
阿贾克斯

jQuery.ajax({
    type: "POST",
    contentType: 'application/json',
    dataType: "json",
    url: "SvcSifria.asmx/" + funcName,
    data: dataJsonString,
    success: function (data) {
            if (onSuccessEvent != undefined) eval(***onSuccessEvent*** + '(data)');
            if (setDisplay != undefined) eval(setDisplay + '(data)');
    },
    async: isAsync
});
}

对话框功能:

function ***setAlert***(data, error) {
    myJson = jQuery.parseJSON(data.d);
        text = data.d;
$("#dialog:ui-dialog").dialog("destroy");
$("#dialog-mess").dialog({
    autoOpen: false,
    modal: true, appendToBody: true,
    buttons: [{
        text: textButton,
        id: "cancle",
        click: function () {
            $(this).dialog("close");
        },text: textButton,
        id: "ok",
        click: function () {                
                getData("Insert_hashala", "Inserthashala", false, "setAlert", isAsync, "inserthasala", [returnValue, "true", "sumHashala", sumHashala, "semelOtek", semelOtek], null, "RefershLendGrid");
            $(this).dialog("close");
        }

    }]
});

$("#ok").focus();
$("#dialog-mess").dialog("open");

}

我不明白你到底想干什么。但是问题应该是.map不会等待ajax成功完成。因此,我认为您需要创建一个数据结构库,在ajax成功的基础上执行addToQueue之类的操作,然后在所有ajax完成后逐个处理队列。无论您执行其他操作,您都不需要使用
eval
。只需将
setAlert
函数作为参数传递给处理程序,然后将其作为
onSuccessEvent(data)
调用即可。类似地,只需调用
setDisplay(data)
,而不是
eval(setDisplay+'(data)