为什么我不能从$ .post(jquery)返回数据

Sam*_*mer 6 jquery post

我一定是犯了一个愚蠢的错误,但我无法返回我从$ .post函数得到的数据并将其存储在一个变量中,不仅如此,我无法从该函数中返回任何内容.例:

function test(){

$.post("demo_test_post.asp",
    {
      name:"Donald Duck",
      city:"Duckburg"
    },
    function(data,status){
      return(data)
    });

}

var foo = test()
alert(foo)
Run Code Online (Sandbox Code Playgroud)

它说foo是未定义的.但要更进一步,即使我这样做:

function test(){

    $.post("demo_test_post.asp",
        {
          name:"Donald Duck",
          city:"Duckburg"
        },
        function(data,status){

          var bar = "bar"
          return(bar)
        });

    }

    var foo = test()
    alert(foo)
Run Code Online (Sandbox Code Playgroud)

它仍然说foo未定义......我必须做错事或误解某事.有人可以请帮助.

谢谢

Nag*_*jun 13

$ .post是一个异步函数.来自函数的控件将在运行后立即返回,但可能会在稍后收到来自post的响应.

所以你可以做的不是返回,而是使用回调函数并在外面定义回调函数.

说,

function test(){

  $.post("demo_test_post.asp",
    {
      name:"Donald Duck",
      city:"Duckburg"
    },
    function(data,status){
      my_function(data)
    });

}

function my_function(data){
  // you can operate on data here
}
Run Code Online (Sandbox Code Playgroud)

  • 注意,你可以做`$ .post("demo_test_post.asp",{name:"Donald Duck",city:"Duckburg"},my_function);`,不需要额外的匿名函数. (2认同)