Как вернуть обещание от "ajax успеха"? - PullRequest
0 голосов
/ 31 марта 2020

Мне нужно написать функцию, которая подготовит меня HTML для входа на мой сайт, я попробовал вот так

function prepareHTML(valId){
  $.ajax({
    type: "POST",
    url: "SOAPulr_getData",
    data: {operationId: valId}
  })
  .done(function(result, status, jqXHR){
    var def = $.Deferred();
    var response = jqXHR.responseText;
    var outputHTML;
    [... here i generate HTML code ...]
    def.resolve(outputHTML);
    return def.promise();
  });
}

сейчас, когда я пытался запустить эту функцию:

prepareHTML(22)
.done(function(data){
  console.log(data)
});

Я получаю ошибку: Ошибка типа: prepare HTML (...) не определена когда я запускаю prepare HTML (22), в консоли нет ошибки.

Что Я не прав?

-

С уважением

ssnake

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Да, я могу сделать это следующим образом:

function prepareHTML(valId){
  res = $.ajax({
    type: "POST",
    url: "SOAPulr_getData",
    data: {operationId: valId}
  });

  return res.promise();
}

, и это работает, но затем я должен сгенерировать HTML в готовую функцию:

prepareHTML(22).done(function(result, status, jqXHR){
    var response = jqXHR.responseText;
    [... here i generate HTML code ...]
});

Вопрос: возможно предварительно обработать респон, чтобы HTML был готов в готовой функции

Мне нужно что-то вроде этого:

prepareHTML(22).done(function(myHTML){
    // here I need ready HTML code prepared into prepareHTML() function
    $("#myId").html(myHTML);
});
0 голосов
/ 31 марта 2020

prepareHTML не имеет оператора return, поэтому возвращает undefined

return $.ajax...
...