jQuery:ajax和autocomplete失败

时间:2013-01-23 15:07:49

标签: jquery jquery-ui

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

控制台让我回复: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工作,自动完成工作。但是,当我尝试将第二个合并到第一个时,它就是最好的。

1 个答案:

答案 0 :(得分:1)

自动填充功能可以选择提供the source-parameter

的网址
  

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

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

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

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

$("input[name=search]").autocomplete({source: '<?php echo PTC.ROOT.DS."ajax"; ?>'});