2015-11-29 46 views
0

我想添加autocompletion到输入表单与我的服务器的数据。在地址/countries/search给出的数据则返回JSON这样的:与jquery的异步自动完成

[{"name":"Afghanistan","code":"AF"},{"name":"Aland Islands","code":"AX"},{"name":"Albania","code":"AL"}] 

这是我的代码:

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
<script src="//code.jquery.com/jquery-1.10.2.js"></script> 
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 

<input type="text" name="countries" id="tags"/> 
<script> 
    $(function() { 
     $("#tags").autocomplete({ 
      source: "/countries/search/" 
     }); 
    }); 
</script> 

当我输入一些东西到服务器接收到一个请求的字段,但自动完成看起来有点奇怪,不包含任何数据:

autocompletion

为什么会出现这种情况,我该如何解决这一问题?

编辑:

我发现从/countries/search数据应与刚内名称的JSON对象。

回答

0

根据文档here你的源代码需要是一个Javascript数组。所以我建议你向服务器发送一个ajax请求,并在成功回调中调用这个方法。

东西线沿线的:

$.ajax({ 
    url: '/countries/search/', 
    type: 'GET', 
    success: function(data) { 
    $("#tags").autocomplete({ 
     source: data 
    }); 
    }, 
    error: function(jqXHR, textStatus, errorThrown){ 

    } 
}); 
+0

当我尝试你的代码加载页面时,执行了ajax部分不是当我输入的输入形式的东西。忘了我必须修改你的代码?对不起,我很新的JavaScript。 – Peter

+0

你是否在成功回调中获取数据?在'autocomplete'部分之前放置一个'console.log(data)'。 –

+0

是的,我得到了响应中所有3个国家的JSON数组。 – Peter