在devbridge自动完成插件中传递ajax调用的数据参数

时间:2018-04-09 13:55:13

标签: javascript jquery ajax autocomplete

我正在使用此自动填充插件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"}.....

1 个答案:

答案 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']