我正在使用jQuery的自动完成插件来填充文本框元素。每当在文本框中输入单词时,我希望数据来自API调用。没有预定义的数组要传递给自动完成功能,它是从PHP脚本动态生成的。 我正在使用的代码,
$(document).ready(function(){
$("#textbox").autocomplete("myurl.php");
});
PHP脚本将一个密钥(即$__GET['key']
)作为响应值,并根据该查询,数据库a给出一个JSON输出。
但这不起作用,如何将键值发送到PHP脚本并获取JSON返回值并填充我的自动完成元素?
答案 0 :(得分:0)
根据此页面:http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions,您的PHP脚本需要将$_GET['p']
作为输入文本,$_GET['limit']
作为最大条目数。如果我理解正确,你的脚本正在寻找'key'参数,当它应该寻找'p'参数时。
它还说响应应该是新行上的每个单词,所以不是传递为JSON,而是需要echo "$word\n";
来保存数据库中的每个单词。
或者,如果你已经开始使用JSON,你可以使用类似下面的JQuery加载数据:
<script type="text/javascript">
function getData( keyTxt ) {
// Send GET request through AJAX
$.get( 'myurl.php',
// Set up your query params
{key:keyTxt},
// Callback for when the datais returned
function( data ) {
// Assuming your PHP puts returns JSON containing the "txt" array
// Convert the array of words into a space-delimited string
completeData = data.txt.join( ' ' );
// Run autocomplete.
$('textbox#textboxID').autocomplete( completeData )
},
// Tell JQuery you're returning json
'json');
</script>
您的PHP将接受'key'参数,查询您的数据库,然后在名为'txt'的单词数组上使用json_encode( )
。
答案 1 :(得分:0)
AFAIK您在PHP脚本中收到的参数有“q”键(即$search = $_GET['q'];
)
有关详细信息,请参阅http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions。