私は、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>
ユーザのパラメータを追加するだけです。function getStateOfChat(user){...} ' – jcubic
^パラメータを渡すと' undefined'というエラーが発生します。つまり、 'user'に割り当てている値、つまり' user1'自体が'undefined'です。 –
^この時点で、javadriptコードブロックの外にある 'var user1 =" john ";'を割り当てました – anu