Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как получить ответ от xmlhttprequest? (скриншоты)

Автор вопроса: user1236048Ответов: 3

У меня есть этот код автозаполнения jqueryUI:

.autocomplete({
  source: function( request, response ) {
  var results = $.getJSON( url, {
    term: extractLast( request.term )
  }, response );
  console.log(results);
},...

Журнал console.log для var 'results' выглядит так: введите здесь описание изображения

Мне нужно извлечь поле ответа или responseText, чтобы проверить, является ли оно пустым, и всплывающее сообщение об ошибке без найденных совпадений. Но ничего не работает, чтобы получить это поле:

results.response
results.getResponse()
results.getResponseHeader()

Ни один из этих методов не работает. Спасибо

Оба ответа работают: он правильно возвращает мой ответ. Я могу проверить это... но это сломает автозаполнение. Я все еще изучаю это.

Третий вариант, обратный вызов, обеспечивает наибольшую гибкость и может использоваться для подключения любого источника данных к автозаполнению. Обратный вызов получает два аргумента:

Объект запроса с одним свойством, называемым термином, которое ссылается на значение, которое в данный момент находится в текстовом вводе. Например, когда пользователь ввел новый йо в поле города, термин автозаполнения будет равен новому йо.

Обратный вызов ответа, который ожидает, что один аргумент будет содержать данные, предлагаемые пользователю. Эти данные должны быть отфильтрованы на основе предоставленного термина и могут быть в любом из форматов, описанных выше для простых локальных данных (массив строк или массив объектов с меткой/значением/оба свойства). Это важно при предоставлении пользовательского обратного вызова источника для обработки ошибок во время запроса. Вы должны всегда вызывать обратный вызов ответа, даже если вы столкнулись с ошибкой. Это гарантирует, что виджет всегда имеет правильное состояние.

Это документация автозаполнения пользовательского интерфейса jquery об источнике с помощью функции обратного вызова. Не могу понять, почему новая версия не работает

javascriptxmlhttprequestresponsejqueryajax

Ответы

Ответ 1 · рейтинг 1 · Manuel van Rijn

если вы хотите ответ, который вы, вероятно, хотите сделать

var results = $.getJSON( url, {
    term: extractLast( request.term )
}, function(response) {
    console.log(response);
});

Ответ 2 · рейтинг 1 · stpe

.getJSON является асинхронным и возвращает результат в функции обратного вызова.

Следовательно, измените свой код на что-то вроде этого:

.autocomplete({
    source: function( request, response ) {
        var results = $.getJSON( url, {
            term: extractLast( request.term )
        }, function( results ) {
            console.log( results );
        });
    }, ...
);

Если вам по какой-то причине нужно выполнить синхронный вызов, вы можете вместо этого использовать функцию jQuery .ajax с для параметра async установлено значение false.

Ответ 3 · jbabey

Вам нужен обратный вызов успеха при выполнении функций jQuery ajax. Вам следует прочитать документацию.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы