变量undefined虽然正确分配我认为

时间:2014-02-06 17:00:29

标签: javascript jquery

我有一个简单的脚本可以将PHP session用户ID转换为javascript文件。然而,当我尝试仅提醒用户ID时,它会显示undefined

如代码所示,我尝试使用简单的警报来检查从脚本返回的数据,这是正确的。

var user_id;

$.get( "/ajax/actions/getUserId.php", function( data ) {

    // alert(data); <-- this works correctly

    var user_id = data;

});

alert(user_id);

有更好的方法吗?

访问的PHP文件(getUserId.php)只是:

session_start();

echo $_SESSION[user_id];

2 个答案:

答案 0 :(得分:2)

您应该使用:

$.get( "/ajax/actions/getUserId.php", function( data ) {    
    var user_id = data;
    alert(user_id);
});

默认情况下,Ajax是异步

在您的代码段中,代码会执行以下步骤:

  1. 在全局词法范围中定义名为user_id的变量
  2. GET
  3. 提出/ajax/actions/getUserId.php ajax请求
  4. 警告变量user_id的值undefined(默认情况下,您没有为其设置任何值)。
  5. 在给定点,ajax请求成功完成,您的回调被调用,因此:
    1. 您可以在回调的词法范围中定义名为user_id的新变量

答案 1 :(得分:2)

Ajax是异步的,因此最后一个警报将在调用ajax的回调函数之前执行。