我正在使用此自动填充插件https://www.devbridge.com/sourcery/components/jquery-autocomplete/
我在jQuery中使用下面的代码行
$('#text-user').autocomplete({
serviceUrl: 'index.php?secController=studentProfile&action=employeeSearch',
onSelect: function(suggestion) {
alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
}
});
从php
方面,它通过以下代码从数据库中获取建议
public
function employeeSearch() {
$arrayOfEmployee = array();
$arrayToPush = array();
$arrayToJSON = array();
$new_item = $this - > apicaller - > sendRequest(array(
"controller" => "Employee",
"action" => "employeeSearch",
"searchCriteria" => $_REQUEST['searchCriteria']
));
$arrayOfEmployee = json_decode($new_item, true);
foreach($arrayOfEmployee as $key => $employee) {
$arrayToPush = array('value' => $employee['FullName'], 'data' => $employee['_id']['$oid']);
array_push($arrayToJSON, $arrayToPush);
}
echo json_encode(["suggestions" => $arrayToJSON]);
}
自动填充的格式正确。现在问题在于始终获取所有数据。然后我意识到它可能因为无法找到没有像ajax那样传递的文本框的searchCriteria。
请帮助我如何通过调用此插件的ajax为"searchCriteria" => $_REQUEST['searchCriteria']
行传递searchCriteria?
我试过
$('#text-user').autocomplete({
serviceUrl: 'index.php?secController=studentProfile&action=employeeSearch',
type: 'POST',
dataType: 'JSON',
data: {
searchCriteria: this.value
},
....
...
它仍然会获取所有员工,因为在数据库编码中,如果searchCriteria留空,则会获取所有员工
请帮忙
数据是
{"suggestions":[{"data":"Aasiya Rashid Khan","value":"5aa662b0d2ccda095400022f"},{"data":"Sana Jeelani Khan","value":"5aa75d8fd2ccda0fa0006187"},{"data":"Asad Hussain Khan","value":"5aaa51ead2ccda0860002692"}.....
答案 0 :(得分:1)
您正在发送POST
请求(使用type: 'POST'
),以便您在服务器端的$_POST
中找到您的变量,但我不会&#39 ;请参阅文档中的POST
,因此请使用默认的GET
:
客户方:
$('#text-user').autocomplete({
serviceUrl: 'index.php?secController=studentProfile&action=employeeSearch',
onSelect: function(suggestion) {
alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
}
});
服务器端:
"searchCriteria" => $_REQUEST['query']