javascript - jQuery全局变量问题

标签 javascript jquery variables initialization global-variables

var id = $(this).children().html();  // id is 5
$.ajax({
   url: 'ajax.php?id=' + id,
   success: function(data) {
      id = data;   // id is 1
   }
});
if(id == 1){    // id is again 5
   ...
}

为什么在下面的示例中我无法重新初始化 id 变量?怎么了?

谢谢。

最佳答案

$.ajax() 函数必须去获取数据,它还没有完成此操作,并在它立即到达代码时执行您的成功回调。

您的代码顺序实际上是这样发生的:

var id = $(this).children().html();
//Ajax start
if(id == 1){ }
//Ajax end (sometime later, not immediately after)
function(data) { id = data; }

如果您依赖此值继续,请将其粘贴到成功回调中:

var id = $(this).children().html();  // id is 5
$.ajax({
   url: 'ajax.php?id=' + id,
   success: function(data) {
      id = data;   // id is 1
      if(id == 1){    // id is now 1
        ...
      }
   }
});

关于javascript - jQuery全局变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2366113/

相关文章:

javascript - 带有 jQ​​uery 链接的 ASP.NET MVC 列表

javascript - JQuery 验证器工具提示,需要帮助识别 javascript 库吗?

jquery - 带有滚动条格式错误的 DataTables 服务器端

javascript - 动态搜索值并创建变量的脚本?

不继承父css的javascript appendchild

javascript - 网页打印按钮和设置

javascript - 使用 JQuery When 进行错误处理

javascript - 更改drawCallback数据表中行的背景

javascript - 无法获取更改变量的函数

PHP/MYSQL - 可以在 mysql 字段值中使用 php 变量吗?