jquery自动填充问题服务器端

时间:2015-09-27 10:26:38

标签: jquery html json ajax autocomplete

我希望this example on jquery autocoplete能够工作 使用我编写的简单自定义服务,但它根本不起作用。

片段:

$( "#city" ).autocomplete({
      source: function( request, response ) {
        $.ajax({
          url: "http://localhost:8085/TestJsonArrayAJAX/MyServlet",
          dataType: "jsonp",
          data: {
            q: request.term
          },
          success: function( data ) {

            alert("ciao");
            response( data );
          }
        });
      },
      minLength: 3,
      select: function( event, ui ) {
        log( ui.item ?
          "Selected: " + ui.item.label :
          "Nothing selected, input was " + this.value);
      },
      open: function() {
        $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
      },
      close: function() {
        $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
      }
    });

我注意到原始服务的输出是这样的:

jQuery1113013915240531787276_1443349161768(["Milaca, MN, United States","Milam, TX, United States");

同时我的服务输出类似于:

["Roma","Milano","Napoli","Palermo","Torino","Firenze","Pisa"]

因为我认为json数组足够了,显然不是。
为什么它不起作用,为什么一个简单的json数组是不够的? 你能帮忙吗?

编辑:

像这样实施我的服务:

JSONArray jarr = new JSONArray();
        jarr.put("Roma");
        jarr.put("Milano");
        jarr.put("Napoli");
        jarr.put("Palermo");
        jarr.put("Torino");
        jarr.put("Firenze");
        jarr.put("Pisa");

String cb = request.getParameter("callback");
response.getOutputStream().print(cb+"("+jarr.toString()+");");

它有效,但我仍然不明白为什么?

1 个答案:

答案 0 :(得分:0)

首先在您的代码中,您不需要调用日志函数,因为您尚未在当前snipet中定义

第二次更改dataType: "jsonp",dataType: "json",

你提供输入作为json源而不是jsonp它们之间存在差异