2013-03-16 6 views
0

Я пытаюсь реализовать автозаполнение jQuery, используя описанный ниже подход (то есть отдельную функцию источника и промежуточную переменную для данных). Сейчас я пытаюсь получить данные в исходную часть функции автозаполнения.Возвращаемые данные для первого ключевого штриха undefined в jQuery autocomplete

Код ниже работает с одной фатальной проблемой, самый первый штрих клавиши возвращает неопределенную переменную returnData. Может ли кто-нибудь объяснить, что происходит?

var returnData; 
function sourceFn() { 
    return $.ajax({ 
     url: //REST URL, 
     dataType: "jsonp", 
     async: false, 
     data: { 
      featureClass: "P", 
      style: "full", 
      maxRows: 12, 
      name_startsWith: request.term 
     }, 
     success: function (data) { 
      returnData = data; 
     }, 
    }) 
} 
} 

$("input#search-input").bind("autocompleteselect", jQuery.proxy(function (event, ui) {}, this)).autocomplete({ 
    appendTo: "#yt-result-list", 
    source: function (request, response) { 
     sourceFn(request, response).done(alert("returnData: " + JSON.stringify(returnData))); 

    } 
}).data("autocomplete")._renderItem = jQuery.proxy(function (ul, item) { 
    alert(item); 
}, this) 

}); 
}); 
}); 

ответ

0

Попробуйте minLength: 0 задав при инициализации автозаполнения, проверьте значение returnData, чтобы увидеть, если вы получите обратно JSON от сервера (используйте поджигатель). Похоже, вы не получаете от вызова ajax только одной буквой, автозаполнение запускает sourceFn() правильно.

+0

minL длина: 0 не делал. Я получаю хорошие данные в функции успеха AJAX на одном ключевом штрихе, но он запускается после sourceFn (запрос, ответ) .done(). –

+0

returnData назначается из вызова ajax, если он не определен в первом такте, есть вероятность, что вы не получите никаких данных. Поместите предупреждение в onsuccess вызова ajax. –

Смежные вопросы