Оповещение о возвращаемом значении вызова ajax
(1. Считаете ли вы полезным иметь глобальный jquery ajax 'helper', который вы можете назвать ajax (url, data, async)?)
function ajax(ajax_url, ajax_data, ajax_async){
ajax_async = typeof(ajax_async) != 'undefined' ? ajax_async : true;
$.ajax({
type: 'GET',
url: ajax_url,
data: ajax_data,
async: ajax_async,
dataType: 'text',
success: function(response) {
return response;
},
error: function(){
}
});
}
если я вызываю функцию, которая помещает GET и возвращает ответ об успехе.
alert(ajax('localhost/hello','',false);
если я делаю alert(get_ajax()), я получаю уведомление о 'undefined'.. даже если было возвращаемое значение
я вижу проблему с циклом обработки событий, но в вызове ajax я async:false. мысли? благодарю вас.
3 ответа
Это один из тех вопросов, которые задавались миллион раз, но поиск практически невозможен. Во всяком случае, проблема в том, что, когда вы вернетесь отсюда...
success: function(response) {
return response;
}
... ты не вернешься из ajax()
функция, но анонимный success
функция. Чтобы вернуть значение из основной функции, вы должны сохранить строку в переменной, чтобы вы могли вернуться из правильной функции.
var val = '';
$.ajax({
// ....
success: function(response) {
val = response;
},
// ....
});
return val;
Обратите внимание, что это работает только тогда, когда вы делаете синхронный вызов. Для асинхронных вызовов лучше дать функцию обратного вызова в качестве аргумента и использовать ее в качестве функции успеха.
Я полагаю, что для синхронного звонка
var data;
$.ajax({
...
async: false,
success: function(response) {
data = response;
}
});
return data;
Ваш ajax
функция оборачивает $.ajax
звонить, ничего не возвращает: вот где undefined
происходит от. Чтобы получить некоторую ценность в вашем alert
Например, вы должны добавить оператор возврата в нижней части вашей функции.
Чтобы получить оповещение с ответом, нужно сделать следующее:
success: function(response) {
alert(response);
},