遇到JS变量问题



我有以下代码:

$("#get_details").click(function(){ 
  name = $("#user_name").val();
  var age,gender;
  $.post("users.php", { name: name },
    function(data){
      if (data.status == 'success'){
        age = data.message[0];
        gender = data.message[1];
        alert(age); //getting output
      }
    }, "json");
   alert(age);//doesn't getting output
 });

我想在$.post()之外访问这些值,为此我必须修改什么?

首先,var在本地范围内定义它们。无需var,它们可以从全局对象(如window.agewindow.genderwindow访问。

但是第二个警报不起作用,因为当调用它时,$.post尚未完成,因为它是异步的。您可以改为执行以下操作:

$("#get_details").click(function(){
    var name = $("#user_name").val();
    var age,gender;
    var json_ready = false;
    $.post("users.php", { name: name },function(data){
        json_ready = true;
        if (!data.status == 'success') return;
        age = data.message[0];
        gender = data.message[1];
    }, "json");
    var json_alert = function(){
        if(!json_ready)  return setTimeout(function(){ json_alert(); },1000);
        alert('gender: '+gender+', age: '+age);
    }
    json_alert();
});

$.post() 是异步的,因此在获取 age 值之前调用第二个 alert()。

要使其工作,您必须使用允许同步发布 $.ajax()。

年龄在 $.post 的回调上获取值。 和此回调的响应消耗时间。 JavaScript 不要等待 $.post 的响应并立即运行 alert(age)。

相关内容

  • 没有找到相关文章

最新更新