Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中为全局变量赋值_Javascript_Jquery - Fatal编程技术网

在javascript中为全局变量赋值

在javascript中为全局变量赋值,javascript,jquery,Javascript,Jquery,我想从jQueryAjax函数为javascript中的全局变量赋值 var trueFalse; $.ajax({ type: "GEt", url: "url", data: "text=" + $("#text").val(), success: function(msg) { if(msg.match(/OK/) != null) { trueFalse = "true"; } else { trueFa

我想从jQueryAjax函数为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;
这里我需要来自success函数的trueFalse值

谢谢
v、 srinath

如果您确实无法更改应用程序逻辑,那么您必须创建一个“同步”ajax请求(通过在
$.ajax
选项中设置
async:false
),然后它将等待“GET”执行完毕,然后才将值返回给调用方


否则,您应该重写代码,使success函数回调到某个回调函数中,它现在可以继续执行任何必须执行的操作。

您的代码将无法工作,因为行
返回trueFalse
在success函数运行之前执行,因为它是作为异步(如Ajax中的A)HTTP请求的结果调用的。您需要将回调函数传递给此代码,并在success函数中调用该函数:

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;
});

您可能还需要查看

,因为您是在form.onsubmit上执行此操作的,所以无法执行异步请求。浏览器不会知道它应该等到异步请求完成。使用async的好处是它不会锁定脚本/浏览器,但在这种情况下,这正是您想要的。

您需要trueFalse做什么?知道这一点很好,因为您可能会以错误的方式执行。onSubmit=“return validate()”如果(trueFalse==true),那么提交else存在于同一页面中。我还没有看到调用此代码的代码,因此无法进行注释。你在表单提交中调用这个吗?是的,我从onsubmit调用了代码。现在一切正常。谢谢你的优雅。我认为call方法的第一个参数是this的范围
callback.call(null,msg | | false)
@czarchic您是对的,已修复,因此它使用调用方法中的
this
作用域(我认为…)