从javascript中的两个不同函数访问全局变量

从javascript中的两个不同函数访问全局变量,javascript,Javascript,我有两个不同的函数,即onLogin:function(){}和addvehicleDetails:function(){} 在onLogin函数中,我通过ajax返回调用获取数据,我分配一个变量returnText,然后使用addvehicleDetails函数 但根据控制台,当我使用addvehicleDetails()函数时,我的定义变得不明确 我想要实现的是,我想要访问一个相同的变量,该变量由两个不同的函数全局声明使用,其中一个函数获取一个值,另一个函数使用它 //Global vari

我有两个不同的函数,即
onLogin:function(){}
addvehicleDetails:function(){}

onLogin
函数中,我通过ajax返回调用获取数据,我分配一个变量
returnText
,然后使用
addvehicleDetails
函数

但根据控制台,当我使用
addvehicleDetails()
函数时,我的定义变得不明确

我想要实现的是,我想要访问一个相同的变量,该变量由两个不同的函数全局声明使用,其中一个函数获取一个值,另一个函数使用它

//Global variable
var returnText = new Array();
代码如下

//Login
        onLogin: function(){
            debugger;
            var that = this,
            username = that.get("username").trim(),
            password = that.get("password").trim();
            if (username === "" || password === "") {
                navigator.notification.alert("Both fields are required!",
                                             function () {
                                             }, "Login failed", 'OK');


                return;
            }

            var request = $.ajax({
                  url: "http://localhost:62373/api/Vehicle/Login",
                  type: "GET",
                  data: {strUsername: username, strPassword: password},
                  dataType: "text"
                });

                request.done(function(data, textStatus, jqXHR) {


                   alert("Success: " + data);
                    returnText[0] = data;
                    alert(returnText[0]);
                    debugger;
                    window.location.href = "iVehicle.html"


               });

        },


 //add vehicle details
        addvehicleDetails: function(){
            debugger;
            var that = this;
            vehicleName = that.get("vehicleName").trim(),
            vehicleType = that.get("vehicleType").trim(),
            registrationNumber = that.get("registrationNumber").trim(),
            fuelType = that.get("fuelType").trim(),
            fuelEfficiency = that.get("fuelEfficiency").trim(),
            insuranceBy = that.get("insuranceBy").trim(),


            dateCreated = new Date();
            var month = dateCreated.getMonth()+1;
            var day = dateCreated.getDate();
            var output = dateCreated.getFullYear() + '/' +
            (month<10 ? '0' : '') + month + '/' +
            (day<10 ? '0' : '') + day;
            myGuid =  returnText[0];
            //myGuid = document.getElementById("hdn").value;
            alert(myGuid);
            var request = $.ajax({
                  url: "myurl",
                  type: "GET",
                  data: {vname:vehicleName, vtype:vehicleType, regNumber:registrationNumber, ftype:fuelType, fefficiency:fuelEfficiency, insby:insuranceBy, datecreated:output, myid:myGuid},
                  dataType: "text"
                });

                request.done(function(data, textStatus, jqXHR) {
                    alert("Success: " + data + ' ' + ".");
                    that.clearForm();
               });


                 request.fail(function( jqXHR, textStatus, errorThrown ) {
                alert("Request failed:" + errorThrown + ' ' + textStatus);
                  // that.clearForm();

                });


                request.always(function(jqXHR, textStatus, errorThrown) {
                // alert("complete: " + errorThrown + ' ' + textStatus);
                      that.clearForm();
                 });

        },
//登录
onLogin:function(){
调试器;
var=这个,
username=that.get(“username”).trim(),
password=that.get(“password”).trim();
如果(用户名==“”| |密码==“”){
navigator.notification.alert(“这两个字段都是必需的!”,
函数(){
},“登录失败”,“确定”);
返回;
}
var请求=$.ajax({
url:“http://localhost:62373/api/Vehicle/Login",
键入:“获取”,
数据:{strUsername:username,strPassword:password},
数据类型:“文本”
});
完成(函数(数据、文本状态、jqXHR){
警报(“成功:+数据”);
returnText[0]=数据;
警报(返回文本[0]);
调试器;
window.location.href=“iVehicle.html”
});
},
//添加车辆详细信息
addvehicleDetails:函数(){
调试器;
var=这个;
vehicleName=that.get(“vehicleName”).trim(),
vehicleType=that.get(“vehicleType”).trim(),
registrationNumber=that.get(“registrationNumber”).trim(),
fuelType=that.get(“fuelType”).trim(),
燃油效率=that.get(“燃油效率”).trim(),
insuranceBy=that.get(“insuranceBy”).trim(),
dateCreated=新日期();
var month=dateCreated.getMonth()+1;
var day=dateCreated.getDate();
var output=dateCreated.getFullYear()+'/'+

(月试试这样的东西

    function onLogin{
        // your ajax code goes here
        // after successfull completion of ajax call your  addvehicleDetails function
        var response = //response from ajax
        addvehicleDetails(response);
    }

您可能应该看看。虽然可以通过全局变量共享Ajax调用的结果,但计时/同步也比较困难。如果第二个函数在收到响应之前尝试访问数据,那么它将不起作用。请发布您尝试过的代码,以便其他人可以向您显示正确的路径。请参考上面的c颂歌恐怖。Blade@FelixKling…在这种情况下,第二个函数在收到响应之前不尝试访问数据。通过执行
window.location.href=“iVehicle.html”
,您将重新加载页面,从而创建一个新的JavaScript环境。