2016-07-07 67 views
-1

我在一个由click事件调用的函数中有一个局部变量。该变量根据点击哪个按钮而不同。在ajax url中使用本地javascript变量

我然后试图将该变量传递给另一个包含AJAX的函数。

我似乎无法在ajax函数中使用第一个局部变量。

我试过使用“window.myVariable”使其成为全球但它不工作。正如你可以在代码中看到的,我还用我的变量作为参数添加了对下一个函数的调用,但没有添加骰子。我在控制台中收到的错误是“变量'用户'未定义。”

我根本无法访问局部变量以外的原始函数。任何人都可以看到它为什么拒绝成为一个全局变量?

function getStateOfChat(){ 
 
\t if(!instanse){ 
 
\t \t instanse = true; 
 
\t \t $.ajax({ 
 
\t \t \t type: "POST", 
 
          url: user + "/process.php", 
 
\t \t \t data: { 
 
\t \t \t  \t \t \t 'function': 'getState', 
 
\t \t \t  \t \t \t 'nickname': nickname, 
 
\t \t \t \t \t \t 'file': file 
 
\t \t \t \t \t \t }, 
 
\t \t \t dataType: "json", 
 
\t \t \t 
 
\t \t \t success: function(data){ 
 
\t \t \t \t state = data.state; 
 
\t \t \t \t instanse = false; 
 
\t \t \t }, 
 
\t \t \t }); 
 
\t } \t 
 
}
var user1 = "john"; 
 
var user2 = "andrew"; 
 

 
// ============== USER 1 ============== 
 
    
 

 
     <button type="button" class="btn btn-info btn-lg chatBtnMain" data-toggle="modal" data-target="#myModal2" id="chatBtn1"> 
 
       Chat to 
 
       <span class='nickname'> 
 
        John 
 
       </span> 
 
     </button> 
 
<script type="text/javascript"> 
 
    document.getElementById('chatBtn1').addEventListener('click', runScript1); 
 
    function runScript1() { 
 
     var user = user1; 
 
     getStateOfChat(user); 
 
    } 
 
</script> 
 
     
 
    
 
    
 
    // ============== USER 2 ============== 
 
     
 
     <button type="button" class="btn btn-info btn-lg chatBtnMain" data-toggle="modal" data-target="#myModal3" id="chatBtn2"> 
 
       Chat to 
 
       <span class='nickname'> 
 
        Andrew 
 
       </span> 
 
     </button> 
 
<script type="text/javascript"> 
 
    document.getElementById('chatBtn2').addEventListener('click', runScript2); 
 
    
 
    function runScript2() { 
 
     var user = user2; 
 
     getStateOfChat(user); 
 
    } 
 
</script>

+0

只需添加用户参数'function getStateOfChat(user){...}' – jcubic

+0

^如果传递一个参数也会导致'undefined'错误,这意味着您分配给'user'的值,即'user1'本身就是'undefined'。 –

+0

^添加到这一点,你已经分配了'var user1 =“john”;'在html外的javascript代码块 – anu

回答

0

我再尝试该变量传递给它包含AJAX另一个函数。

您已成功传递:

getStateOfChat(user); 

的问题是,你从来不看在你传递给函数的变量。

url: user + "/process.php", 

你想读一个名为user变量,但你没有一个叫做变量的函数内部。

在参数参数指定:

function getStateOfChat(user){ 

我使用 “window.myVariable”,使其全球的尝试,但它不工作

避免全局。他们很难管理这些局部变量。

我根本无法访问局部变量以外的原始函数。任何人都可以看到它为什么拒绝成为一个全局变量?

var user = user1; 

这就是the var keyword目的。

+0

感谢昆汀,我试过所有,但它仍然告诉我,用户的价值是'未定义'。它运行url查询,但在控制台中给我一个错误,说“http:// localhost:8888/confirm/undefined/process.php无法加载资源:” –

+0

@ E.Nathan - 它[正常工作](https: //www.evernote.com/l/AANl7rOZ2DBDhKkFgca_CTsUkTG948xc9oQ)当我让[change](http://jsbin.com/taqita/2/edit?html,output) – Quentin

+0

不适合我。难道我的订单是错的吗?我首先包含JQuery。第二次运行事件监听器的所有HTML和脚本标记,并最后调用ajax –