Возврат значения обратного вызова вне функции обратного вызова (ajax)

-2

Я пытаюсь вернуть значение обратного вызова вне функции обратного вызова:

Я делаю функцию, основанную на теме: Как я могу вернуть ответ от асинхронного вызова?

(function (){

    return getAjaxResult(function(result) { return result; }); 
     //<-- Return Undefined (in console log return correct value)
})();

function getAjaxResult(callback){
    $.ajax({
       url: 'myurl',
       type: 'GET',
        success: function (result) 
        {
           if (result === 'working'){
                callback(result);
          }else if (result === 'notworking'){
                callback('notworking');
          }
        }
      })
 }

Вернуть "Не определено" (в журнале консоли вернуть правильное значение).

Я не знаю, является ли это лучшим вариантом для возврата значения AJAX в обратном вызове

  • 2
    Возможный дубликат Как я могу вернуть ответ от асинхронного вызова?
  • 0
    Именно из этой темы я сделал этот код, и он не работал
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Есть два способа сделать это, вы можете использовать async false, но не рекомендуется, и вы всегда можете использовать обещание:

сделать такую функцию:

function ajaxCallback(id){
  return   $.ajax({
    method: "POST",
    url: "../YourUrl",
    data: {  id: id}
  })
}

тогда назовите это так:

if (id != '')//
{
    ajaxCallback(id)
               .done(function( response ) {
                               //do something with your response
                            });
}

Надеюсь, поможет

  • 0
    Как я могу вернуть ответ на возврат ajaxCallBack?
  • 0
    @Slinidy ответом «done» является ответ «ajaxCallback», выполняемый просто после завершения функции ajaxCallback, ответ, который вы получаете - это данные, с которыми вы хотите работать; также вы можете связать .fail () после выполнения «done» для обработки ошибок.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню