gpt4 book ai didi

jquery - jQuery UI 自动完成的 "response"回调中的 "request"和 "source"参数是什么?

转载 作者:行者123 更新时间:2023-12-03 22:28:17 26 4
gpt4 key购买 nike

我正在查看自动完成教程,我有几个问题:http://jqueryui.com/demos/autocomplete/#option-disabled

$( "#tags" )
// don't navigate away from the field on tab when selecting an item
.bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).data( "autocomplete" ).menu.active ) {
event.preventDefault();
}
})
.autocomplete({
minLength: 0,
source: function( request, response ) {
// delegate back to autocomplete, but extract the last term
response( $.ui.autocomplete.filter(
availableTags, extractLast( request.term ) ) );
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function( event, ui ) {
var terms = split( this.value );
// remove the current input
terms.pop();
// add the selected item
terms.push( ui.item.value );
// add placeholder to get the comma-and-space at the end
terms.push( "" );
this.value = terms.join( ", " );
return false;
}
});

所以我理解源的参数是requestresponse。这些是保留关键字吗?当我在谷歌中输入这个时,我找不到任何东西。我不清楚这里传递的请求和响应是什么。请求只是获取输入吗?我在哪里可以阅读更多相关内容?

最佳答案

不,requestresponse 不是保留关键字 - 如果是,则不能将它们用作函数参数名称。

这里发生的事情非常简单,如果您在 Node 中执行过任何操作,您就会看到该模式。它是异步 JavaScript。

您正在将匿名函数传递给source。每当自动完成需要查询数据源(换句话说,用户输入了一些内容)时,就会调用此函数。

该函数的参数是请求响应request 只是自动完成请求的信息; request.term 是查询(用户输入的内容)。如何实现搜索取决于您 - 也许您有一个可能的局部变量,或者您可以对服务器进行 AJAX 调用。

现在是重要的部分:如果您正在进行 AJAX 调用,则不能简单地从 source()返回一个值,因为该函数将在很久之前返回AJAX 调用完成。这就是为什么有一个 response 参数。

response 是传递给 source() 函数的函数引用,只要您得到请求的答案,您就可以调用该函数。通过闭包的魔力,您可以从 AJAX 回调内部调用此函数。

response(可以更容易地命名为callback)需要一个字符串数组或带有labelvalue<的对象数组 属性。它将在自动完成下拉列表中显示这些结果。

把它们放在一起:

$('selector').autocomplete({
...
source: function(request, response) {
// calculate results for a query.
response([{ label: 'Example', value: 'ex' }]);
}
});

关于jquery - jQuery UI 自动完成的 "response"回调中的 "request"和 "source"参数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9934018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com