固定的!谢谢!请参阅下面的“更正代码”。
目标是从对话框中取回数据。我看过很多文章,但无法让其中任何一篇工作,所以我决定使用 Web 服务在对话框和底层页面之间来回传递数据。
除了读取从 Web 服务返回的值的代码之外,所有代码都已就位。我可以在调试器中看到数据正在被传回,但是当我返回调用者时,返回的数据是未定义的。
jQuery 函数 getLocal 调用 AJAX,返回良好的数据,但是当它返回调用它的函数(verbListShow)时,返回值是“未定义”。
这一切都发生在一个主要用 jQuery 编写并打开一个 jQuery 对话框的 ASP.NET 页面中。
function getLocal(name) {
    $.ajax({
        type: "POST",
        async: false,
        url: "WebServices/FLSAService.asmx/GetLocalVariable",
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify({ name: name }),
        success: function (data) {
            var rtn = data.d;
            return rtn;
        }
    });
}
上面的代码可以工作,但是调用时,rtn 是未定义的。这是调用者:
function verbListShow(dutyNumber) {
    $('#dlgDutyList').dialog({
        modal: true,
        show: "slide",
        width: 250,
        height: 250,
        open: function (event, ui) {
            setLocal("DUTYNUMBER", dutyNumber);
        },
        buttons: {
            "Select": function () {
                var id = getLocal("VERBID"); // <*** Returns undefined
                var verb = getLocal("VERB"); // <*** Returns undefined
                $.ajax({
                    type: "POST",
                    async: false,
                    url: "WebServices/FLSAService.asmx/SetDuty",
                    dataType: 'json',
                    contentType: 'application/json; charset=utf-8',
                    data: JSON.stringify({ dutyNum: dutyNumber, id: id, verb: verb }),
                    success: function (data) {
                        data = $.parseJSON(data.d);
                        if (data.ErrorFound) {
                            showMessage(data.ErrorMessage, 2, true);
                        }
                        else {
                            log('Set Duty: ' + data.StringReturn + ' (' + data.intReturn + ')');
                        }
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert("updateDuty: "
                            + XMLHttpRequest.responseText);
                    }
                });
                $(this).dialog("close");
            },
            Cancel: function () {
                $(this).dialog("close");
            }
        }
    });
    $('#dlgDutyList').dialog('open');
固定代码:
function getLocal(name) {
var rtn = "";
    $.ajax({
        type: "POST",
        async: false,
        url: "WebServices/FLSAService.asmx/GetLocalVariable",
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify({ name: name }),
        success: function (data) {
            rtn = data.d;
        }
    });
return rtn;
}