0

可能重复:
jQuery ajax 返回值
如何从函数的 AJAX 调用返回响应?

我有 javascript。它从数据库加载数据。关于加载数据,我想返回 true 或 false。但我无法退货。我的代码如下:

function CheckISRC() {
     var url = "/TrackEdit/CheckISRC/" + $('#isrcid').val();
     var isrc = $('#isrcid').val();
     var result = false;
     $.get(url, {
         isrc: isrc
     }, function (data) {
         if (data == "true") {
             result = true;
         }
         else {
             result = false;
         }
     });
     return result;
 }

它总是给出错误的结果。有人遇到过这种问题吗?'谢谢提前'

4

3 回答 3

0

如果同步使用该函数非常重要,您可以将其重构为:

function CheckISRC() {
     var url = "/TrackEdit/CheckISRC/" + $('#isrcid').val();
     var isrc = $('#isrcid').val();
     var result = false;
     $.ajax({
        async: false,
        success: function (data) {
           if (data == "true") {
               result = true;
           }
           else {
               result = false;
           }
         },
         data: { isrc: isrc }
     });
     return result;
 }

由于 @ManseUKasync在 jQuery 1.8 中已弃用,因此如果您想要同步方法,您应该使用旧版本。

于 2013-01-21T13:55:39.363 回答
0

JQuery ajax 函数是异步的。这意味着当您将结果初始化为false时,在“返回结果”之后将结果设置为true或false;线路已运行。

您可以使调用同步,但这被认为是更糟糕的做法。您通常最好重构代码以允许 JQuery Ajax 的异步特性。

例如,您以前有:

function myFunction() {
    //Code before
    var result = CheckISRC();
    //Code after using result
}

你可以有以下内容:

function myFunction() {
    //Code before
    CheckISRC();
}
function myFunction_callback(result) {
    //Code after using result
}

在哪里调用myFunction_callbackajax 代码的成功选项,如下所示:

function CheckISRC() {
     var url = "/TrackEdit/CheckISRC/" + $('#isrcid').val();
     var isrc = $('#isrcid').val();
     $.get(url, {
         isrc: isrc
     }, function (data) {
             myFunction_callback(data == "true");
     });
 }
于 2013-01-21T13:55:48.097 回答
0

问题是当你返回时result,它没有价值。因为 ajax 没有完成它的任务。你做一些回调函数,当ajax的结果从服务器返回时,做你想做的事。

像这样的一些事情:

function CheckISRC(Callback) {
    var url = "/TrackEdit/CheckISRC/" + $('#isrcid').val();
    var isrc = $('#isrcid').val();
    var result = false;
    $.get(url, {
        isrc: isrc
    }, function (data) {
        if (data == "true") {
            Callback(true);
        }
        else {
            Callback(false);
        }
    });
 }
 function YourCallback(result) {
     //...
 }
于 2013-01-21T13:56:53.587 回答