如何在JavaScript中使用全局变量?
我想在顶部ajax表单中更改一个全局变量,并在底部ajax表单中使用它。 当我这样做时,这不起作用:如何在JavaScript中使用全局变量?,javascript,html,scope,global-variables,Javascript,Html,Scope,Global Variables,我想在顶部ajax表单中更改一个全局变量,并在底部ajax表单中使用它。 当我这样做时,这不起作用: var xGlobalTitle; //global variable that I want to use $.ajax({ type: 'GET', url: '/Home/postInformationofConferenceTitle', dataType: "JSON", success: function (data) { x
var xGlobalTitle; //global variable that I want to use
$.ajax({
type: 'GET',
url: '/Home/postInformationofConferenceTitle',
dataType: "JSON",
success: function (data) {
xGlobalTitle = data.xglobalTitle; //I want to change the value of the variable in here.
}
})
alert(window.xGlobalTitle); //And I want to use this value in here
$.post("/Home/selectRooms", { xtitle: xGlobalTitle }, function (data) {
var ndx = 0;
$.each(data.xroom_name, function (key, value) {
var Xroom_name = data.xroom_name[ndx];
var Xroom_plan = data.xroom_plan[ndx];
var column =
('<tr>' +
'<td>' +
'<div class="img-container">' +
'<img src="../../assets/img/room-plan/' + Xroom_plan + '" alt="..." id="imgsrc">' +
'</div>' +
'</td>' +
'<td id="imgname">' + Xroom_name + '</td>' +
'<td class="text-right">' +
'<a href="#" class="btn btn-simple btn-warning btn-icon edit" data-toggle="modal" data-target="#myModal"><i class="fa fa-edit"></i></a>' +
'<a href="#" class="btn btn-simple btn-danger btn-icon remove" ><i class="fa fa-times"></i></a>' +
'</td>' +
'</tr>');
document.getElementById('colmn').innerHTML = document.getElementById('colmn').innerHTML + column;
ndx++;
});
});
var xglobalttle//我要使用的全局变量
$.ajax({
键入:“GET”,
url:“/Home/postInformationofConferenceTitle”,
数据类型:“JSON”,
成功:功能(数据){
xGlobalTitle=data.xGlobalTitle;//我想在这里更改变量的值。
}
})
警报(window.xGlobalTitle)//我想在这里使用这个值
$.post(“/Home/selectRooms”,{xtitle:xGlobalTitle},函数(数据){
var-ndx=0;
$.each(data.xroom_名称、功能(键、值){
var Xroom_name=data.Xroom_name[ndx];
var Xroom_plan=data.Xroom_plan[ndx];
变量列=
('' +
'' +
'' +
'' +
'' +
'' +
''+Xroom_name+''房间+
'' +
'' +
'' +
'' +
'');
document.getElementById('colmn').innerHTML=document.getElementById('colmn').innerHTML+列;
ndx++;
});
});
我怎样才能做到这一点。在这方面是否有人会支持我?这是一个时间问题,而不是访问全局变量的问题。您的
警报在xGlobalTitle=data.xGlobalTitle之前执行代码>执行。这将不起作用,因为ajax是异步的。无法确定第一个ajax何时会成功
因此,为了在第二个ajax中使用该值,您需要等待第一个ajax成功。这个问题可以通过链接所有ajax或使用Promise
&来解决
另外,jquery的.done
方法ajax
也很有用。将$.post
放在.done
回调函数中
var xGlobalTitle; //global variable that I want to use
$.ajax({
type: 'GET',
url: '/Home/postInformationofConferenceTitle',
dataType: "JSON",
success: function (data) {
xGlobalTitle = data.xglobalTitle; //I want to change the value of the variable in here.
}
}).done(function(data){
alert(window.xGlobalTitle)
$.post("/Home/selectRooms", { xtitle: xGlobalTitle }, function (data) {
//rest of the code
})
})
在ajax中,应该使用async:false
点击这个链接
您的第二个请求是在不等待来自第一个请求(异步调用)的数据的情况下发生的,因此有很多方法可以做到这一点,也是其中之一
xglobalttle变种//我要使用的全局变量
$.ajax({
键入:“GET”,
url:“/Home/postInformationofConferenceTitle”,
数据类型:“JSON”,
成功:功能(数据){
xGlobalTitle=data.xGlobalTitle;//我想在这里更改变量的值。
alert(window.xGlobalTitle);//我想在这里使用这个值
$.post(“/Home/selectRooms”,{xtitle:xGlobalTitle},函数(数据){
var-ndx=0;
$.each(data.xroom_名称、功能(键、值){
var Xroom_name=data.Xroom_name[ndx];
var Xroom_plan=data.Xroom_plan[ndx];
变量列=
('' +
'' +
'' +
'' +
'' +
'' +
''+Xroom_name+''房间+
'' +
'' +
'' +
'' +
'');
document.getElementById('colmn').innerHTML=document.getElementById('colmn').innerHTML+列;
ndx++;
});
});
}
})那么我该怎么做呢?这是一个很好的答案,但我已经做到了。但当我这样做时,DataTable的第一行显示“表中没有可用的数据”。因此,在ajax表单工作之前,datatable.js文件正在工作,即系统无法读取datatable中的任何数据。然后,当ajax表单运行时,我的数据保存在datatable中,但第一行显示“表中没有可用的数据”,并且数据功能不正常。所以我不能按更新和删除按钮。
var xGlobalTitle; //global variable that I want to use
$.ajax({
type: 'GET',
async: false,
url: '/Home/postInformationofConferenceTitle',
dataType: "JSON",
success: function (data) {
xGlobalTitle = data.xglobalTitle; //I want to change the value of the variable in here.
}
})
xGlobalTitle = data.xglobalTitle; //I want to change the value of the variable in here.
alert(window.xGlobalTitle); //And I want to use this value in here
$.post("/Home/selectRooms", { xtitle: xGlobalTitle }, function (data) {
var ndx = 0;
$.each(data.xroom_name, function (key, value) {
var Xroom_name = data.xroom_name[ndx];
var Xroom_plan = data.xroom_plan[ndx];
var column =
('<tr>' +
'<td>' +
'<div class="img-container">' +
'<img src="../../assets/img/room-plan/' + Xroom_plan + '" alt="..." id="imgsrc">' +
'</div>' +
'</td>' +
'<td id="imgname">' + Xroom_name + '</td>' +
'<td class="text-right">' +
'<a href="#" class="btn btn-simple btn-warning btn-icon edit" data-toggle="modal" data-target="#myModal"><i class="fa fa-edit"></i></a>' +
'<a href="#" class="btn btn-simple btn-danger btn-icon remove" ><i class="fa fa-times"></i></a>' +
'</td>' +
'</tr>');
document.getElementById('colmn').innerHTML = document.getElementById('colmn').innerHTML + column;
ndx++;
});
});
}