如何在JavaScript中使用全局变量?

如何在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

我想在顶部ajax表单中更改一个全局变量,并在底部ajax表单中使用它。 当我这样做时,这不起作用:

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++;

                });

            });

}