如何从包含jQuery.get()的JavaScript函数中获取返回值?

时间:2010-05-15 09:05:17

标签: javascript jquery

我有一个调用JQuery.get()的JavaScript方法,我想从它返回值到被调用函数..以下是代码:

function CheckExistance(userName) {
        $.get(
            "JQueryPage.aspx", { name: userName },
             function(result) {
                 if (result == "1") {
                     value = true;
                 }
                 else if (result == "0") {
                     value = false;
                 }
                 else if (result == "error") {
                     value = false;
                 }
             }
        );                
        return value;
    }

我希望return value;返回get()函数中设置的值...我知道get()是异步操作,我想要一个解决方案吗?

3 个答案:

答案 0 :(得分:7)

您无法将值“返回”到被调用的函数中;因为你已经意识到,AJAX调用是异步的。相反,您需要有效地延迟执行AJAX调用之后的代码;将此代码放在callback函数中。

现在发生的事情是,当AJAX请求完成并且value可用时执行此代码。

function CheckExistance(userName, callback) {
        $.get(
            "JQueryPage.aspx", { name: userName },
             function(result) {
                 var value = false;

                 if (result == "1") {
                     value = true;
                 }


                 callback(value);
             }
        );                
    }

然后你的功能可能在哪里:

function validateUserName() {
    var input = $('someField').val();
    var isUnique = CheckExistance(input);

    if (isUnique) {
       // whatever
    } else {
       alert("This username is already taken");
    };
};

现在应该是:

function validateUserName() {
    var input = $('someField').val();

    CheckExistance(input, function (isUnique) {
       if (isUnique) {
          // whatever
       } else {
          alert("This username is already taken");
       };
    });
};

答案 1 :(得分:2)

这是一个完美无缺的简单示例

    function test() {
      return $.ajax({
      url: "/url/" + param,
      type: 'get',
      dataType: 'html',
      async: false
    }).responseText
}

答案 2 :(得分:-4)

可能有效;

function CheckExistance(userName) {
    var value
    $.get(
        "JQueryPage.aspx", { name: userName },
         function(result) {
             if (result == "1") {
                 value = true;
             }
             else if (result == "0") {
                 value = false;
             }
             else if (result == "error") {
                 value = false;
             }
         }
    );
while(value == undefined);
    return value;
}