2011-03-03 92 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函数。