使用ajax进行自动完成数据的jQuery UI

时间:2014-03-14 12:13:48

标签: jquery ajax

我想知道我是否可以使用自己的" webservice"使用jQuery ui api(没有JSON等)的基本演示,在availabletags变量中打印我需要的内容,如下所示:

$(function() {

 var availabletags = $.ajax({ url: "myservice.jsp", async:     false }).responseText;  


$("#search").autocomplete({
  source: availabletags
});

});

myservice.jsp将自动完成源所需的内容打印到文件中,如下所示:

[
  "ActionScript",
  "AppleScript",
  "Asp",
  "BASIC",
  "C",
  "C++",
  "Clojure",
  "COBOL",
  "ColdFusion",
  "Erlang",
  "Fortran",
  "Groovy",
  "Haskell",
  "Java",
  "JavaScript",
  "Lisp",
  "Perl",
  "PHP",
  "Python",
  "Ruby",
  "Scala",
  "Scheme"
]
当我复制& amp;时,

自动完成功能完美无缺。在"来源:"之后粘贴在可用标签的位置上面但是当我尝试通过ajax这样做时,它会给我404错误。

是否可以使这项工作?

2 个答案:

答案 0 :(得分:2)

使用此功能;

$("#search").autocomplete({
  source: "myservice.jsp"
});

或者

$("#search").autocomplete({
        source: function(request, response) {
            $.ajax({
                url: "myservice.asp",
                dataType: "jsonp",
                success: function(data) {
                    response($.map(data, function(item) {
                        return {
                            label: item.value,
                            value: item.key
                        }
                    }));
                }
            });
        }
    });
});

响应的格式为keyvalue

答案 1 :(得分:1)

<script> 
                   jQuery( document ).ready(function() {                       
                      jQuery('#search').keyup(function() {
                            //autocomplete
                        jQuery('#search').autocomplete({
                            source: 'your url',
                            autoFocus: true,

                            change: function (event, ui) {
                                if (ui.item == null || ui.item == undefined) {
                                    jQuery('#search').val('');
                                    jQuery('#search').attr('disabled', false);
                                } else {
                                    jQuery('#search').attr('disabled', false);
                                } }
                        });             

                    });
                    });
                   </script>