设置AJAX回调函数内的变量
Set variable inside AJAX callback function
我需要根据服务器结果启用或禁用单击事件。我使用jquery有以下函数:
$("#button").click(function(){
var validated = true;
$.ajax({
url: "/Foo",
type: "POST",
success:function(data){
// alert(validated); ----> true
if(data){
validated = false;
// alert(validated); ----> false
}
}
});
// alert(validated); ----> true
return validated;
});
在上面的代码中,总是返回true。我认为问题是我设置错误的全局变量validated
。我读过这篇文章,但不适合我。我做错了什么?
问题是,AJAX调用发生在一个单独的"线程"中,而不是函数的其余部分。因此,具有click事件的线程自己运行,执行异步完成的AJAX调用,然后返回。AJAX线程永远没有时间修改已验证的变量——click处理程序已经返回。
解决这个问题的最好方法是从AJAX线程内部进行回调,或者在AJAX线程本身中禁用您想要的元素,而不是将结果返回给另一个函数,然后该函数将在另一个线程中修改您的按钮。
相关文章:
- 带有两个变量函数的Ajax提交表单
- 设置变量函数不起作用
- 为什么使用 ||在变量函数声明中
- Javascript 变量函数不保留值
- 为什么要在函数定义之外引用静态变量(函数属性)
- jQuery 变量函数无法运行
- 循环中的变量函数定义
- javascript onclick设置为变量函数名
- JavaScript:调用已启动类(数据包处理程序)的变量函数
- Javascript测试存根全局变量函数
- Aptana能否识别其他文件中定义的变量/函数
- jquery将其传递给变量函数
- 传递一个变量函数到数组[Javascript]
- 如何使用' this '像一个对象,并通过字符串获得它的变量/函数
- javascript变量/函数的首字母是什么意思?
- Javascript .apply带有变量函数名
- 在JavaScript中添加一个全局变量/函数(特别是NativeScript)
- 变量函数未定义错误
- AngularJS-继续检查变量/函数
- Javascript从本地向全局变量函数添加行