这个javascript响应函数有什么作用?

时间:2011-03-03 15:09:31

标签: javascript jquery response

我在另一篇SO帖子中看到了这段代码:jQuery UI Autocomplete with ASP MVC

    $("#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()的作用。

2 个答案:

答案 0 :(得分:17)

这个名为response的对象是一个回调函数,它通过自动完成方法传递给标记为source的函数。

请参阅Jquery UI Autocompleate

  

第三种变体,即回调,提供了最大的灵活性,可用于将任何数据源连接到自动完成。回调有两个参数:

     

一个请求对象,具有一个名为“term”的属性,它引用当前文本输入中的值。例如,当用户在城市字段中输入“new yo”时,自动填充术语将等于“new yo”。

     

响应回调,它要求单个参数包含要向用户建议的数据。应根据提供的术语过滤此数据,并且可以采用上述任何简单本地数据格式(String-Array或具有标签/值/两者属性的Object-Array)。在提供自定义源回调以处理请求期间的错误时,这很重要。即使遇到错误,也必须始终调用响应回调。这可确保窗口小部件始终具有正确的状态。

答案 1 :(得分:-3)

它似乎是原始编码器代码所具有的自定义功能。据我所知,这不是一个固有的jQuery函数。