0

我正在尝试将 ajax 请求与自动完成功能结合起来。但是自动完成似乎有问题。我正在使用来实现我的代码。

控制台给了我类似的东西:http://domain.com/[%22...array from ajax here]?term=What i put in my input指向 403 错误 -.-

虽然对我来说似乎很简单,但我有点迷失了。

  <script type='text/javascript'>
      $("input[name=search]").on('keyup', function(){
         jQuery.ajax({
           type: 'POST', // Le type de ma requete
           <?php echo "url: '".PTC.ROOT.DS."ajax'"; ?>, // URL to call (works)
           data: {
             search: ''+$("input[name=search]").val()+''
           }, 
           success: function(data, textStatus, jqXHR) {

             window.availableNames = data; //JSON format
             $(function() {
              alert(window.availableNames); //Show the JSON encoded table with the right result.

              $("input[name=search]").autocomplete({source: window.availableNames}); // Fails.
             });
           },
           error: function(jqXHR, textStatus, errorThrown) {
           }
         });
      });
      </script>

谢谢

编辑:单独的 Ajax 工作和自动完成工作。但是当我尝试将第二个合并到第一个时,它确实如此。

4

1 回答 1

1

自动完成可以选择提供一个 url 作为源参数

使用字符串时,自动完成插件期望该字符串指向将返回 JSON 数据的 URL 资源。它可以在同一台主机上,也可以在不同的主机上(必须提供 JSONP)。自动完成插件不会过滤结果,而是将请求参数“term”添加到 URL,服务器端脚本应该使用它来过滤结果。数据本身可以采用与上述本地数据相同的格式。

因此,请确保位于提供的 url 的 api 端点返回 json 并对“term”参数做出正确反应。

这样您就不必摆弄自己的 ajax 调用。

所以你的自动完成代码看起来像这样:

$("input[name=search]").autocomplete({source: '<?php echo PTC.ROOT.DS."ajax"; ?>'});
于 2013-01-23T16:02:34.460 回答