2012-08-02 118 views
1

我想获得响应内Ajax JqueryUi自动完成,但我不能在下拉框中得到结果。这里是脚本=>jqueryui自动完成与Ajax响应

$(function(){ 
    $("#user_key").autocomplete({ 
     source: function(){ 
      var http = false; 
      if (window.XMLHttpRequest){ 
       http = new XMLHttpRequest(); 
      } else { 
       http = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      if (http){ 
       http.open("POST","./ajax/autocomplete.php",true); 
       http.onreadystatechange = function(){ 
        if (http.status==200 && http.readyState==4){ 
         this.value = http.responseText; 
        } 
       }; 
       http.send(null); 
      } 
     }, 
     close: function(){ 

     } 
    }); 
}); 
autocomplete.php

例如简化为只写了<?php echo "hello"; ?> 我怎样才能得到这个下拉框中的“hello”,为什么它是需要使用接近:在底部功能感谢:)

PS。我认为我在编写this.value时错了= http.responseText,例如在写alert(http.responseText)时它会从.php文件中得到结果。我怎么能指出结果写在下拉框?

+1

如果你使用jQuery,使用'$。员额()'或'$。阿贾克斯()'方法来做AJAX。 – Matt 2012-08-02 17:41:11

+0

P.S.你有没有完全阅读[jQuery UI自动完成文档](http://jqueryui.com/demos/autocomplete/)? – Matt 2012-08-02 17:43:03

+0

事实上,我不知道jquery的Ajax,并且因为我有这样的脚本 – tnanoba 2012-08-02 17:47:47

回答

2

根据我所做的文档和一些测试,您只需要将source属性设置为您的php脚本的url。

jQuery的UI代码发送term参数的查询字符串到指定存在的网址:source.php?term=hello

所以,在你的榜样,下面应该工作,因为你在你的PHP脚本正确处理查询参数,应该返回一个JSON数组。

$(function(){ 
    $("#user_key").autocomplete({ 
     source: "./ajax/autocomplete.php", 
     minLength: 2 
    }); 
}); 

返回应具有以下格式的JSON数据:

[{ "id" : "Item1", "label" : "Item1", "value" : "Item1" }, 
{ "id": "Item2", "label" : "Item2", "value" : "Item2" }]