【问题标题】:Pass data parameter for ajax call in devbridge autocomplete plugin在 devbridge 自动完成插件中为 ajax 调用传递数据参数
【发布时间】:2018-04-09 13:55:13
【问题描述】:

我正在使用这个自动完成插件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"}.....

【问题讨论】:

    标签: javascript jquery ajax autocomplete


    【解决方案1】:

    您正在发送 POST 请求(使用 type: 'POST' ),因此您将在服务器端的 $_POST 中找到您的变量,但我在文档中没有看到 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']

    【讨论】:

    • 它不起作用,因为它需要通过插件ajax调用。
    • 它是通过 POST 请求从 ajax 发送的
    • 我只是通过使用 type: 'POST', data: {...} 来调整代码,没有提到这个插件并且没有工作。我发布这个只是为了让问题更容易理解......
    • 抱歉,它仍然无法正常工作......现在它不会像使用的那样获取所有数据。它什么也得不到
    • 硬编码 $_REQUEST['searchCriteria'] 是否有效?喜欢"searchCriteria" => "some criteria"
    猜你喜欢
    • 1970-01-01
    • 2019-08-31
    • 2020-05-10
    • 2016-04-30
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 2016-12-27
    • 2014-05-31
    相关资源
    最近更新 更多