Jquery Ajax:值无法返回到成功范围之外

时间:2013-08-08 22:14:36

标签: ajax jquery

我这里有一个奇怪的问题(可能是愚蠢的)

在下面的代码中,我声明了变量 retVal 并为其指定了null。 在成功执行代码时,我用返回值(msg.d)重新分配了它。

它成功地显示警告(retVal +“divyansh”)的值; 但是当我在警告时尝试相同时(retVal +“divyansh再次”); 我得到了。

我知道我可以通过将“return retVal”置于成功之内来获得价值,但我想知道为什么会发生这种情况,以及是否有办法在底部返回值。

function getGrpParent() {
var retVal = null;
var hidType = $('[Id$=hidType]').val();
var hidGpId = $('[Id$=hidSelectedId]').val();
if (hidType == 'gp') {
    var url = "../User/UserHierar.aspx/GetParentGroup";
    var option = {
        type: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        url: url,
        data: JSON.stringify({ GroupId: hidGpId }),
        success: function (msg) {
            if (msg.d != "") {
                retVal = msg.d;
                alert(retVal + " divyansh");
            }
        },
        error: function (err) {
            alert('error');
        }
    };
    $.ajax(option);
}
alert(retVal + " divyansh again");
return retVal;
}

1 个答案:

答案 0 :(得分:0)

一个简单的解决方法是将变量retVal移到你的函数范围之外,使其成为全局变量。 Jason正确指出的成功函数是在其自己的上下文中执行的,超出了getGrpParent()的范围。

我希望这会有所帮助。

P.S。你应该让Jason创建一个答案并接受它。