从javascript调用jquery ajax函数

calling jquery ajax function from javascript

本文关键字:ajax 函数 jquery 调用 javascript      更新时间:2023-09-26

可能重复:
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;
 }

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

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

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;
 }

由于@ManseUK async在jQuery 1.8中被弃用,所以如果您想要同步方法,您应该使用旧版本。

问题是,当您返回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) {
     //...
 }
JQueryajax函数是异步的。这意味着,当您将结果初始化为false时,在"return result;"行运行后,结果将设置为true或false。

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

例如,您以前的位置:

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

你可以有以下几种:

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

在ajax代码的成功选项中调用myFunction_callback,如下所示:

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