gpt4 book ai didi

jquery - JSONP 和 JQUERY 自动完成

转载 作者:行者123 更新时间:2023-12-01 05:00:39 25 4
gpt4 key购买 nike

我已经阅读和测试了很多相关内容,但无法获得 JQuery Autocomplete将 JSONP 与我创建的 REST 服务结合使用。

这是我的 JavaScript:

$( "#input" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "http://localhost:8080/Rest/api/suggest/",
dataType: "jsonp",
data: {
jsonpCallback : "p",
q: request.term
},
success: function( data ) {

response( $.map( data.suggestions, function( item ) {
return {
label: item.LABEL,
value: item.URI
}
}));
}
});
},
minLength: 2
});

JSONP 对象将是包装在

中的标准 JSON 对象
p({});

通过 ?jsonpCallback=p 向 REST API 提供回调函数。 javascript/html 代码在 http://localhost:8888 下本地运行服务器。

要查看数据响应,我需要在 JavaScript 中定义“p”回调函数

 function p(data){
alert(data.toSource());
}

如果我把它取下来就没有任何作用,但我不明白为什么 JQuery Autocomplete示例代码无需任何回调函数即可工作,最重要的是为什么下拉结果表单自动完成不显示。我应该如何处理回调函数才能使下拉自动完成功能起作用?

谢谢大家,丹尼尔

最佳答案

我相信 jQuery 会自动附加 jsonCallback=?当数据类型为“jsonp”时。它使用随机数作为回调函数名称,但在本例中 success: 函数用作回调。你的函数 p() 被调用过吗?它也不应该被引用。它是一个函数引用,而不是一个字符串。

我会省略这个:

data: {
jsonCallback : "p"

但这意味着您的 REST 服务需要更加智能,并获取 jsonCallback cgi 参数并使用该值作为 json 的函数包装器。

更新@Daniele

回复:“我如何知道 Jquery 分配给回调函数的随机名称?”

这取决于您的 REST 服务使用的编程语言。下面是两个示例:Perl 和 PHP:

#!/usr/bin/perl
use CGI ":cgi";
$jsonCallback = $q->param('jsonCallback');
$json = ...
print header(
-type => 'application/json'
);

print $jsonCallback . '(' if $jsonCallback;
print $json;
print ')' if $jsonCallback

PHP

 <?php
$jsonCallback = $_GET['jsonCallback'];
$json = ...
echo $jsonCallback . '(';
echo $json;
echo ')';
?>

关于jquery - JSONP 和 JQUERY 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10499728/

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