У меня есть функция AJAX, которая работает правильно, но я не могу получить доступ к переменным, которые я объявляю в функции позже на странице. Если вы посмотрите на приведенный ниже код, вы увидите, что я предупреждаю переменную number_rows в пределах функции, которая работает, но когда я пытаюсь выполнить вход в нее вне функции, она возвращается как «неопределенная».Объявление переменной в функции AJAX и вызов ее позже (jQuery)
var newData = "user_id=" + id;
$.ajax({
type: 'POST', // HTTP method POST or GET
url: 'ajax.php', //Where to make Ajax calls
dataType:'text', // Data type, HTML, json etc.
data:newData, //post variables
success:function(response){
var number_rows = response;
alert(number_rows);
},
error:function (xhr, ajaxOptions, thrownError){
alert(xhr + " " + ajaxOptions + " " + thrownError); //throw any errors
}
});
console.log(number_rows);
Я понимаю, что мой прицел может быть выключен. Я попытался переместить весь свой код в функцию успеха, но это вызвало множество других проблем, поэтому проще всего получить переменную ответа как глобальную переменную, которую я мог бы использовать в остальной части кода страницы. Я также пытался что-то вроде этого:
success:function(response){
$('body').append('<span class="ajax_response" id="' + response + '"></span>');
}
var number_rows = $('.ajax_response').attr('id');
console.log(number_rows);
Но по какой-то причине не в состоянии сразу же подобрать значение идентификатора таким образом. Я могу подтвердить, что диапазон выполняется с правильным значением ID, но по какой-то причине он не обрабатывает его правильно. Любая помощь с этим была бы весьма признательна.
Спасибо!
Это * a * jax, и даже если переменная будет глобальной, она не будет иметь значение до тех пор, пока ajax не закончится. Перемещение вашего кода в функцию обратного вызова успеха - это действительно путь. – Bergi
В [jquery learn scope] (http://learn.jquery.com/javascript-101/scope/) вы найдете ответ. И сделайте свой синхронизм xhr. – Mamuz
Просто убедитесь, что «позже» после того, как произойдет успешный ответ, и вы станете золотым. –