我正在尝试在ajax中获得对JqueryUi自动完成的响应,但我无法在下拉框中获得结果。这是script =>
$(function(){
$("#user_key" ).autocomplete({
source: function(){
var http = false;
if (window.XMLHttpRequest){
http = new XMLHttpRequest();
} else {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
if (http){
http.open("POST","./ajax/autocomplete.php",true);
http.onreadystatechange = function(){
if (http.status==200 && http.readyState==4){
this.value = http.responseText;
}
};
http.send(null);
}
},
close: function(){
}
});
});
为了简化autocomplete.php
中的示例,仅写为<?php echo "hello"; ?>
如何在下拉框中显示“hello”以及为什么需要在脚本底部使用 close:功能,谢谢:)
PS。我认为在编写 this.value = http.responseText 时我犯了错误,例如编写alert(http.responseText)时会得到.php文件的结果。如何指示结果写在下拉框中?
答案 0 :(得分:2)
根据我完成的文档和一些测试,您只需要使用php脚本的url设置source
属性。
jQuery UI代码将查询字符串中的term
参数发送到您在其中指定的网址:source.php?term=hello
因此,在您的示例中,假设您在PHP脚本中正确处理了querystring参数,则应该可以使用以下内容,该脚本应返回JSON数组。
$(function(){
$("#user_key" ).autocomplete({
source: "./ajax/autocomplete.php",
minLength: 2
});
});
返回的JSON数据应采用以下格式:
[{ "id" : "Item1", "label" : "Item1", "value" : "Item1" },
{ "id": "Item2", "label" : "Item2", "value" : "Item2" }]