如何将JQuery $ .post的值保存到Javascript全局变量

时间:2016-12-01 23:59:07

标签: javascript php jquery html ajax

我正在使用Javascript和JQuery。

我有以下变量var RoleID="";,我把它放在所有函数之外。

我有一个功能

role_submit(){
var role=$('#emp_role').val();
var url="submitrole.php";
$.post(url, {role2: role} ,function(data){
var RoleID=data;
alert(RoleID);
})
}

此函数获取<input type="text" id="emp_role">的值,并使用JQuery url='submitrole.php'提交给$.post并从url='submitrole.php'获取 ID 返回保存在RoleID中,之后RoleID会收到提醒。这一切都是使用<button onclick="role_submit();" type="submit">Submit</button>执行的,工作正常,意味着来自url='submitrole.php' ID 准确无误,并且也会准确提醒。

当我使用以下函数查看全局变量时出现问题 var RoleID

function alert_roleID(){alert(RoleID);}

我使用

调用此函数

<button onclick="alert_roleID();" type="submit" >Role ID</button>

此时警报弹出显示的内容,而不是我从url='submitrole.php'返回的 ID 。如何让全局变量RoleID的值为url='submitrole.php'

2 个答案:

答案 0 :(得分:1)

有两种方式。

显式将变量设置为窗口。 Window是全球范围。

function role_submit(){
  var role=$('#emp_role').val();
  var url="submitrole.php";
  $.post(url, {role2: role} ,function(data){
    window.RoleID=data;
    alert(RoleID);
  })
}

或者在全局范围内定义变量。如果您这样做,请确保在重新定义时不使用var。如果你使用var,它只会在该范围(函数)中显示一个新变量。

var RoleID;
function role_submit(){
  var role=$('#emp_role').val();
  var url="submitrole.php";
  $.post(url, {role2: role} ,function(data){
    RoleID=data;
    alert(RoleID);
  })
}

答案 1 :(得分:0)

在外部声明变量之后,不应再在函数内部再次使用'var',因为这将重新创建本地范围的变量而不是全局范围的变量,并且在函数外部不可访问。所以你可以删除'var',如下所示,

var RoleID = '';

role_submit(){
var role=$('#emp_role').val();
var url="submitrole.php";
$.post(url, {role2: role} ,function(data){
   RoleID=data;
alert(RoleID);
})
}