jquery ajax全局变量,jQuery-JavaScript:Ajax请求后的全局变量

您期望的是同步(阻塞)类型的请求。

var it_works = false;

jQuery.ajax({

type: "POST",

url: 'some_file.php',

success: function (data) {

it_works = true;

},

async: false //

});​

// Execution is BLOCKED until request finishes.

// it_works is available

alert(it_works);

默认情况下,请求是异步(非阻塞)的,这意味着浏览器不会等待它们完成才能继续工作。 这就是为什么您的警报得到错误结果的原因。

现在,使用jQuery.ajax,您可以选择将请求设置为同步,这意味着脚本将仅在请求完成后才继续运行。

但是,推荐的方法是重构代码,以便在请求完成后立即将数据传递给回调函数。 这是优选的,因为阻止执行意味着阻止UI,这是不可接受的。 这样做:

$.post("some_file.php", '', function(data) {

iDependOnMyParameter(data);

});

function iDependOnMyParameter(param) {

// You should do your work here that depends on the result of the request!

alert(param)

}

// All code here should be INDEPENDENT of the result of your AJAX request

// ...

异步编程稍微复杂一点,因为结果   提出请求的方法封装在函数中,而不是遵循请求语句。 但是用户体验到的实时行为可能会很明显   更好,因为他们不会看到服务器速度缓慢或网络速度缓慢导致   浏览器就好像崩溃了一样。 同步编程是无礼的   并且不应在人们使用的应用程序中使用。

道格拉斯·克罗克福德(YUI博客)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值