2012-06-20 3 views
0

Я работаю над получением автозаполнения из удаленного источника данных. Это возвращает JSON, но он не заполняет поле автозаполнения.Ajax autocomplete issue

$("#patientName").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "http://localhost:8080/cs/accountTypeAhead", 
      dataType: "json", 
      type: 'POST', 
      data: { "patientName": $("#patientName").val(), 
            "requestID": (new Date()).getTime()}, 
      success: function(data) { 
       var searchInfo = new Array(); 

       for(var key in data) 
       { 

        if(typeof data[key] === "object") { 
         for(var i = 0; i < data[key].length; i++) 
         { 
          searchInfo.push(data[key]); 

         }//end for loop 
        }//end if 


        else if(key == "requestID") 
        { 
         if (data.requestID < $("#requestID").val()) 
         { return false;} 

         else 
         { 
          $("#requestID").val(data.requestID); 
         } 
        }//end if/else 


       }//end for loop 


       return searchInfo; 
      } 
     }); 
    }, 
    minLength: 1, 
}); 

Мой выход с консоли - это то, что я ожидал. Я думаю, что это связано с возвратом массива.

ответ

1

Попробуйте изменить

return searchInfo; 

по

response(searchInfo); 
+0

Тогда как вы получите отдачу? Он возвращает правильное значение. Затем вы смотрите на примеры в [JQuery UI] (http://jqueryui.com/demos/autocomplete/remote-jsonp.html), это похоже. –

+0

@David Nuckols: отредактировал мой ответ –

0

Вот моя рабочая версия обработчика "успех" для автозаполнения с использованием удаленного JSON.

success: function (data) { 
          response($.map(data, function (item){ 
return { label: item.FirstName, value: item.FirstName, id:item.MemberId } 

})) 
         } 

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

Также ознакомьтесь с этой демонстрацией. http://jqueryui.com/demos/autocomplete/remote-jsonp.html

+0

Спасибо за помощь. В конечном итоге решение было –

0

Спасибо за помощь решение было

success: function (data) { 
     response($.map(data.results, function (item){ 
     return { label: item, value: item }; 
    })); 
}