2016-07-07 22 views
-1

У меня есть локальная переменная внутри функции, вызванной событием click. Переменная различается в зависимости от того, какая кнопка нажата.Использовать локальную переменную javascript в ajax url

Я пытаюсь передать эту переменную другой функции, содержащей 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

просто добавьте параметр user '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), когда я делаю [это изменение] (http://jsbin.com/taqita/2/edit?html,output) – Quentin

+0

Не для меня как-то. Может быть, у меня неправильный порядок. Сначала я включаю JQuery. Запустите все теги HTML и сценариев с прослушивателями событий и вызовите ajax last –