如何从JQuery.post函数中获取数据

0 variables jquery post scope function

我是JS的新手,但我无法相信我无法弄明白......

myerr是全球定义的.我将myerr =设置为帖子的返回值.一旦我离开了这个功能,就会失去它的价值.

myerr="";
$.post("/rpc/validate_song_entry", {'title':$('#title').val()}, function(data){
  alert(data.title); //----> Alerts expected result.
  myerr=data.title;
  alert(myerr); //-----> Alerts expected result.
}, "json");
alert(myerr); //-------> Nothing. Blank dialog.
Run Code Online (Sandbox Code Playgroud)

在我看来,这是一个可变范围的问题,但我看不出如何......

编辑:我在下面发布了这个,但不知道如何删除它...我现在明白这篇文章是异步完成的.这是有道理的.没有意义的是,警报按您看到的顺序弹出.我希望最后一个警报(空白警报)首先出现.它不是.它出现在最后.

我希望post函数内的警报最后出现.有谁能解释一下?

Kan*_*iya 5

jQuery.ajax 需要使用,你需要设置async :false

因为$ .post是异步请求,异步请求后的函数不等待异步函数完成.这就是为什么你的警报打印没有任何东西,因为它在$ .post完成之前执行.因此,您需要使请求同步,然后在您的函数执行后,将运行警报

myerr="";

    $.ajax({
          url:  "/rpc/validate_song_entry",
          type: "POST",
          data: {'title':$('#title').val()},
          async:false,
          success: function(data){
             myerr=data.title;
          }
       }
    );

alert(myerr);
Run Code Online (Sandbox Code Playgroud)