Javascript 涉及AJAX的函数不返回值-jQuery

Javascript 涉及AJAX的函数不返回值-jQuery,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个document.ready函数,如下所示 function myfun(){ var xx; $.ajax({ type: 'POST', url: 'handler.php', cache: false, success: function(result) { xx = result; }, }); return xx; } var a;

我有一个document.ready函数,如下所示

  function myfun(){
    var xx;
    $.ajax({
        type: 'POST',
        url: 'handler.php',
        cache: false,
        success: function(result) {
          xx = result;
        },
    });
    return xx;
  }


  var a;
  a = myfun();
  alert(a);

handle.php
设置为echo
1234
。但我得到的警告是“未定义”。我怎样才能解决这个问题?预期的警报是“1234”(来自ajax处理程序的回复)。

它是异步的。使用回调:

function myfun(){

    return $.ajax({
        type: 'POST',
        url: 'handler.php',
        cache: false
    });
}

myfun().done(function(data){
    console.log(data);
});
或者,如果您使用的是没有延迟对象的旧jQuery版本:

function myfun(done){

    $.ajax({
        type: 'POST',
        url: 'handler.php',
        cache: false,
        success: done
    });
}

myfun(function(data){
    console.log(data);
});

因为您在ajax调用完成之前返回值,ajax调用默认为异步的,所以您可以在
成功
回调中发出
警报
,此时您的变量将具有您设置的值:

function myfun(){
  var xx;
  $.ajax({
      type: 'POST',
      url: 'handler.php',
      cache: false,
      success: function(result) {
        xx = result;
        alert(xx);
      },
  });
}

myfun();

这是一个异步调用的问题。您可以重写以下代码:

var xx;
  var a;

  function myfun(){
    $.ajax({
        type: 'POST',
        url: 'handler.php',
        cache: false,
        success: function(result) {
          xx = result;
        },
    });
  }

 myfun();
 alert(xx);

好吧问题解决了。。我会尽快将此标记为已接受。。。