2016-07-07 28 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

^この時点で、javadriptコードブロックの外にある 'var user1 =" john ";'を割り当てました – anu

答えて

0

私は、AJAXが含まれている別の関数にその変数を渡すようにしようとしています。

あなたは成功し、それを渡している。

getStateOfChat(user); 

問題は、あなたがそれを渡している関数内でその変数を読んだことがないということです。

url: user + "/process.php", 

あなたはuserという変数を読み取ろうとしているが、あなたは、関数の内部であることという変数を持っていません。

引数パラメータでそれを指定します。

function getStateOfChat(user){ 

私はそれが世界のために "window.myVariable" を使ってみましたが、それは

回避動作しません。グローバル。ローカル変数を管理するのは難しいです。

私は、元の関数の外側のローカル変数にはまったくアクセスできません。なぜ誰がグローバル変数になることを拒否しているのか誰にでも見えますか? the var keywordの目的だ

var user = user1; 

+0

ありがとうQuentin、私はすべてを試しましたが、それでもユーザーの値が '未定義'であることがわかります。それはURLクエリを実行しますが、コンソールで "http:// localhost:8888/confirm/undefined/process.phpリソースを読み込めませんでした"というエラーを表示します。 " –

+0

@ E.Nathan - それはうまく動作します(https: //www.evernote.com/l/AANl7rOZ2DBDhKkFgca_CTsUkTG948xc9oQ)私が[その変更を行う](http://jsbin.com/taqita/2/edit?html,output) – Quentin

+0

何とか私のためではありません。私の注文が間違っているかもしれません。私は最初にJQueryを組み込みます。 2番目のイベントリスナーでHTMLタグとスクリプトタグをすべて実行し、最後にajaxを呼び出します –

関連する問題