2011-03-03 122 views
13

我看到這個代碼在另一個SO後:jQuery UI Autocomplete with ASP MVC這個JavaScript響應函數做什麼?

$("#CustomerID").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       type: "POST", 
       url: "/customer/search", 
       dataType: "json", 
       data: { 
        term: request.term 
       }, 
       error: function(xhr, textStatus, errorThrown) { 
        alert('Error: ' + xhr.responseText); 
       }, 
       success: function(data) { 
        response($.map(data, function(c) { 
         return { 
          label: c.Company, 
          value: c.ID 
         } 
        })); 
       } 
      }); 
     }, 
     minLength: 2, 
     select: function(event, ui) { 
      alert('Select'); 
     } 
    }); 

我明白,只是成功的功能應有盡有。我知道map正在接受一個數組並將每個值映射到一個具有label和value屬性並返回新數組的新對象,但我不確定response()是做什麼的。

回答

17

這個被稱爲response的對象是一個回調函數,通過自動完成方法傳遞給標記爲source的函數。

看到Jquery UI Autocompleate

第三變型中,回調,提供最大的靈活性,並且可以用於將任何數據源連接到自動填充。該回調獲得兩個參數:

請求對象,具有一個名爲「term」的單個屬性,該屬性引用文本輸入中當前的值。例如,當用戶在城市字段中輸入「新喲」時,自動完成詞將等於「新喲」。

A 響應回調,它需要一個參數來包含要提示給用戶的數據。這些數據應根據提供的術語進行過濾,並且可以採用上述任何用於簡單本地數據(String-Array或帶有標籤/值/兩個屬性的對象數組)的格式。在請求期間提供自定義源回調以處理錯誤時,這很重要。即使遇到錯誤,您也必須始終調用響應回調。這可確保小部件始終具有正確的狀態。

+0

哇,我怎麼錯過了。 Facepalm :) – Dismissile

+0

@david waters我們可以設置請求期限和如何? – bhawin

-3

它似乎是原始編碼器的代碼具有的自定義函數。據我所知,這不是一個固有的jQuery函數。