Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从函数ajax返回_Javascript_Jquery - Fatal编程技术网

Javascript 从函数ajax返回

Javascript 从函数ajax返回,javascript,jquery,Javascript,Jquery,如果我有数据验证,我这里有个问题。更多的函数$ajaxjquery没有返回true和false的值,知道如何解决这个问题吗 示例代码: 示例调用: var check= ret("user"); if(check== true){ ..run .. } 默认情况下,ajax调用是异步的——这实际上就是“A”的含义。这意味着您的ret函数将在调用success函数之前返回。您有两个解决问题的选项: 使ajax调用同步-请参阅上的异步选项。这几乎总是一个坏主意,因为整个页

如果我有数据验证,我这里有个问题。更多的函数$ajaxjquery没有返回true和false的值,知道如何解决这个问题吗

示例代码: 示例调用:

var check= ret("user");

if(check== true){
  ..run ..
}

默认情况下,ajax调用是异步的——这实际上就是“A”的含义。这意味着您的ret函数将在调用success函数之前返回。您有两个解决问题的选项:

  • 使ajax调用同步-请参阅上的异步选项。这几乎总是一个坏主意,因为整个页面将阻塞,直到调用返回
  • 反转控制流,以便在调用成功回调时发生所需的行为。您可以通过将函数传递到ret来实现这一点:

    函数(如successHandler){


  • Ajax是异步的。不能使用返回值。必须使用回调:

    ret("user", function(check) {
      if (check == true)
        .. run ..
    });
    
    您可以像这样实现
    ret

    function ret(as, callback) {
      ....codes...
       $.ajax({
          type: "POST",
          url: "../../03",
          data: "as="+as,
          success: function (msg) {
            if(msg == 'true' ){
             ..codes..
             callback(true);
            }else{
             ..codes..
             callback(false);
            }
          } 
      });
    }
    

    另一种选择是强制请求同步,但这并不是实现同步的惯用方法。

    用户希望在jQuery对象外部传输真/假响应,以便函数可以返回它。有些情况下,您确实需要函数返回某些内容,而不是调用回调

    即使jQuery调用是同步的(即“async:false”),上面的示例代码也不会工作,但确实必须将调用显式指定为同步

    正确的方法是将jQuery对象附加到变量:

    var obj = jQuery.ajax({ 'async:false', (...)
    
    然后,在函数末尾,在jQuery对象的右括号后,向函数中添加:

    return obj.responseText;
    

    谢谢,我看一下手册:)一个非常相似的问题的可靠答案
    var obj = jQuery.ajax({ 'async:false', (...)
    
    return obj.responseText;