当我使用auto completor时,我正在尝试使用自动完成,ajax调用工作。但以下代码不起作用。如何正确设置数据源?
$("#searchbox").autocomplete({ source: [{
var search_val = $("#searchbox").val();
$.ajax( {
type : "POST",
url : "./wp-admin/admin-ajax.php",
data : {
action : 'wpay_search',
user_name : search_val
},
success : function(data) {
//$('#search_result').html(data);
return data;
}
});
}] });
答案 0 :(得分:0)
我认为更简单的方法是将回调函数作为源传递,这将更灵活,适合您要完成的任务。根据jQuery UI文档:
回调有两个参数:
具有单个术语属性的请求对象,该属性引用文本输入中当前的值。例如,如果用户在城市字段中输入“new yo”,则自动填充术语将等于“new yo”。
响应回调,它需要一个参数:向用户建议的数据。应根据提供的术语过滤此数据,并且可以采用上述任何简单本地数据格式。在提供自定义源回调以处理请求期间的错误时,这很重要。即使遇到错误,也必须始终调用响应回调。这可确保窗口小部件始终具有正确的状态。
查看代码,可能类似于:
$("#searchbox").autocomplete({
//define the callback function
source: function(request, response) {
$.ajax({
dataType: "json",
url: "./wp-admin/admin-ajax.php",
data: request,
success: function(data) {
//create array for response objects
var acTerms = [];
//process response and add it to the array
$.each(data,function(i,val){
acTerms.push(val.username); //whatever your username property is
});
//pass array to response callback
response(acTerms);
});
});
});
您的PHP脚本将使用作为数据发送的请求对象上的“term”属性,以便检索适当的结果并回显生成的JSON,由成功回调处理它。
有一个关于在How to use the jQuery UI Autocomplete Widget使用函数回调作为源的好教程。
<强>更新强>
我回过头来意识到处理AJAX请求的一种更简单的方法是将字符串传递给指向脚本URL的源回调。
jQuery UI文档声明:
然后您的代码将更改为:
$("#searchbox").autocomplete({
//define the callback function
source: "./wp-admin/admin-ajax.php"
});
您必须在PHP脚本中处理传入GET请求($ _GET [“term”])的术语。由于您的脚本返回以JSON格式编码的字符串,假设您的JSON格式正确,您的自动完成功能应该正确填充。