[英]assign value to global variable in javascript
我想从jquery ajax函数向javascript中的全局变量赋值。
var trueFalse;
$.ajax({
type: "GEt",
url: "url",
data: "text=" + $("#text").val(),
success: function(msg) {
if(msg.match(/OK/) != null) {
trueFalse = "true";
}
else {
trueFalse = "false";
}
}
});
return trueFalse;
在这里,我需要成功函数的trueFalse值。
谢谢v.srinath
您的代码将无效,因为该行return trueFalse;
在成功函数运行之前执行,因为它是异步(如Ajax中的A)HTTP请求的结果而被调用。 您需要将回调函数传递给此代码,然后在成功函数中调用它:
function getWithCallback(val, callback) {
var scope = this;
$.ajax({
type: "GET",
url: "url",
data: "text=" + val,
success: function(msg) {
callback.call(scope, msg.match(/OK/) || false);
}
});
}
getWithCallback($("#text").val(), function(result) {
if (result) {
// Do something
}
});
您可以尝试使用此方法来验证提交的表单:
var validating = false;
var valid = false;
$('#myform').submit(function(event) {
if (validating) {
return false;
}
if (valid) {
return true;
}
var form = this;
validating = true;
getWithCallback($('#text').val(), function(result) {
if (result) {
valid = true;
form.submit();
}
validating = false;
});
return false;
});
您可能还想看看jQuery Validation插件
如果您确实无法更改应用程序逻辑,则必须创建一个“同步” ajax请求(通过在$.ajax
选项中设置async:false
),它将等待直到执行“ GET”,然后才返回给调用方的值。
否则,您应该重写代码,以使成功函数回调到某些回调函数,该回调函数现在可以继续执行必须要做的任何事情。
由于您在form.onsubmit上执行此操作,因此无法执行异步请求。 浏览器不会知道应该等待异步请求完成。 使用异步的好处是它不会锁定您的脚本/浏览器,但是在这种情况下,这实际上是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.