аварийное возвращаемое значение вызова ajax - PullRequest
0 голосов
/ 11 ноября 2011

(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);

, если я делаю оповещение (get_ajax ()), я получаю оповещение о неопределенности, даже если было возвращаемое значение

Я вижу проблему с циклом обработки событий, но я асинхронно: ложно в вызове ajax.мысли?спасибо.

Ответы [ 3 ]

3 голосов
/ 11 ноября 2011

Это один из тех вопросов, которые задавались миллион раз, но поиск практически невозможен.В любом случае, проблема в том, что когда вы возвращаетесь отсюда ...

success: function(response) {
    return response;
}

... вы возвращаетесь не из функции ajax(), а из анонимной функции success.Чтобы вернуть значение из основной функции, необходимо сохранить строку в переменной, чтобы можно было вернуться из правильной функции.

var val = '';

$.ajax({
    //       ....
    success: function(response) {
       val = response;
    },
    //       ....
});

return val;

Обратите внимание, что это работает только при выполнении синхронного вызова.Для асинхронных вызовов лучше указать функцию обратного вызова в качестве аргумента и использовать ее в качестве функции успеха.

1 голос
/ 11 ноября 2011

Для синхронного вызова, я думаю, вы бы сделали

var data;
$.ajax({
    ...
    async: false,
    success: function(response) {
        data = response;
    }
});
return data;
0 голосов
/ 11 ноября 2011

Ваша ajax функция переносит вызов $.ajax, ничего не возвращает: отсюда и undefined.Чтобы получить какое-то значение в вашем alert примере, вы должны добавить оператор возврата внизу вашей функции.

Чтобы получить предупреждение с ответом, выполните следующее:

success: function(response) {
    alert(response);
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...