繁体   English   中英

在javascript中为全局变量赋值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM