Jquery / Javascript Проблема переменной области с $ .get - PullRequest
0 голосов
/ 22 ноября 2010

У меня проблемы со следующей ситуацией:

leeftijd:function(){
                var testvar = "untouched";

                var d = $('#gebdatumdd').val(),
                    m = $('#gebdatummm').val(),
                    y = $('#gebdatumjjjj').val();

                x = "none!";

                $.get("assets/incl/ageCheck.php", {y:y, m:m, d:d},
                    function(data){                 
                        console.log(data); // returns 'green';      
                        console.log(testvar);    // returns 'untouched';    
                        testvar = data; // write data in testvar;
                        console.log(testvar); // returns 'green';
                });

                console.log('outside: ' + testvar); // returns 'untouched'; 

            }

Мой 'testvar' просто не вернет правильное значение. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 22 ноября 2010

Ajax-вызов асинхронный. Так что последний console.log выполняется до завершения запроса. Вы должны выполнить всю обработку, требующую результатов запроса в функции обратного вызова.

Другой вариант будет использовать $.ajax с параметром async: false. Однако это может заблокировать браузер, пока запрос не будет завершен!

1 голос
/ 22 ноября 2010

Вы можете запустить его синхронно. Я думаю, что можно обернуть ваш вызов $ .get () примерно так:

$.ajaxSetup({ async: false });

$.get();

$.ajaxSetup({ async: true });

Лучшим решением было бы на самом деле использовать метод обратного вызова для обработки всего, что вы хотите, когда будет выполнена проверка возраста.

function ageCheckCallback(data) {
// Update form
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...