自动完成 Jquery Json

Posted

技术标签:

【中文标题】自动完成 Jquery Json【英文标题】:Autocomplete Jquery Json 【发布时间】:2016-05-29 03:49:57 【问题描述】:

我正在尝试使用外部 Json 作为自动完成 Jquery UI 插件的源代码:http://jqueryui.com/autocomplete/

这段代码运行良好:

    var availableTags = ["aberdeen","aberystwyth","aberystwyth juniors"]

    $( "#enter-your-parkrun" ).autocomplete(
    open: function(e) 
      var results = $.ui.autocomplete.filter(availableTags, e.term);
            response(results);
       valid = false;
     ,
     select: function(e)
        valid = true;
     ,
     close: function(e)
        if (!valid) $(this).val('');
     ,
     source: availableTags,

);

$("#enter-your-parkrun").change(function()
    if (availableTags.indexOf($(this).val()) == -1)
        $(this).val("");
    
);

但由于我有近 800 个值,我需要使用外部源。我尝试了不同的方法,但我找不到让它发挥作用的方法:

$( "#enter-your-parkrun" ).autocomplete(

     source: function( request, response ) 
        $.ajax(
          url: "http://tribesports.com/pages/parkrun-event-list",
          dataType: "jsonp",
          data: 
            q: request.term
          ,
          success: function( data ) 
            response( data );
          
        );
      ,
     minLength: 2,
     delay: 400,

);

我不确定 q: request.term 应该是什么以及是否应该解析数据?我还需要添加验证以确保只能接受列表中的值,它适用于我的第一个示例,不太确定如何将其传输到我的第二个代码。

谢谢

【问题讨论】:

那个服务器不支持 JSONP 是问题。 您是否收到来自外部来源的响应..?它看起来怎样..? “我还需要添加验证以确保只能接受列表中的值” - 什么列表..? availableTags..?如果您只接受那些为什么要发送外部请求..?如果没有,您如何将availableTags 中的数据与来自外部源的响应联系起来......? 【参考方案1】:

request.term 是用户迄今为止输入的内容,应该在 AJAX 调用中作为参数传递给服务器,以便服务器可以过滤结果。

在.ajax 调用中,dataType 是您期望从服务器返回的数据类型。您还没有显示它,但很可能是json,而不是jsonp。如果是 JSON jQuery 会自动解析。

关于将术语发送到服务器,

如果您使用 GET 方法(这是默认方法),则必须将其包含在查询字符串中,如下所示:

url: 'http://tribesports.com/pages/parkrun-event-list?term='+request.term
1234563所需格式的数据

如您所见,这一切都取决于服务器上的内容。

【讨论】:

以上是关于自动完成 Jquery Json的主要内容,如果未能解决你的问题,请参考以下文章

jquery自动完成插件,json

jQuery自动完成JSON响应

Jquery自动完成不过滤来自django的JSON数据

自动完成 Jquery Json

如何将 JSON 对象内的 JSON 数组传递给 jQuery 自动完成

在 jquery 自动完成插件中,数据没有被解析为 json