2012-12-27 87 views
1

我想綁定文本框和JQuery自動完成功能。當我檢查Firebug AJAX請求&響應它返回如下。但是文本框沒有顯示任何項目。你能告訴我,我做錯了什麼?謝謝。JQueryAutoComplete不顯示結果

enter image description here 這裏是我的編碼:

$("#<%= TextBox1.ClientID %>").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        url: "/contractors/web_services/wsSM.asmx/SearchDrugs", 
        type: "POST", 
        dataType: "json", 
        data: { 
         'LocationID': "10543", 
         'Search': request.term 
        }, 
        success: function (data) {       
         response($.map(data.d, function (item) { 

          return { 
           value: item.FullDrugName, 
           id: item.DrugID 
          } 
         })) 
        } 
       }); 
      }, 
      delay: 1, 
      minLength: 2, 
      select: function (event, ui) { 
       alert(ui.item.id); 
      } 
     }); 

回答

0

除了@fealin's answer,您將需要更改處理xml響應的方式。它看起來並不像在返回數據上有d屬性,而且還需要在XML結構中查找正確的節點,並提取它們的文本以構建返回到窗口小部件的響應數組。

根據您所提供的XML,它可能是這個樣子:

$("#<%= TextBox1.ClientID %>").autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
      url: "/contractors/web_services/wsSM.asmx/SearchDrugs", 
      type: "POST", 
      dataType: "json", 
      data: { 
       'LocationID': "10543", 
       'Search': request.term 
      }, 
      success: function (data) {       
       response($(data).find("Drug").map(function (_, el) { 
        var $el = $(el); 
        return { 
         label: $el.find("FullDrugName").text(), 
         value: $el.find("DrugID").text() 
        }; 
      })); 
     }); 
    }, 
    delay: 1, 
    minLength: 2, 
    select: function (event, ui) { 
     alert(ui.item.id); 
    } 
}); 

下面是剛剛使用XML字符串(沒有AJAX請求)的一個例子:http://jsfiddle.net/J5rVP/29/

1

的數據類型屬性是代表你期待從服務器返回的數據的類型。 您將數據類型定義爲json,但服務器會返回一個xml輸出。您應該將您的DataType屬性更改爲xml