从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环境。