【问题标题】:jQuery.autocomplete doesn't show value returned from jQuery.ajaxjQuery.autocomplete 不显示从 jQuery.ajax 返回的值
【发布时间】:2012-09-20 15:32:59
【问题描述】:

我有以下代码。

ajax查询有效,从服务器返回的数据是有效的json。
通过这样的请求,我成功地使自动完成下拉菜单与远程数据源一起工作:http://jqueryui.com/demos/autocomplete/#remote

我的问题是从 jquery.ajax 返回的数据没有显示在自动完成中。任何人都可以帮忙吗?谢谢。

jQuery( "#input_2_5" ).autocomplete({
    source: function(request, response){
        jQuery.ajax({
            url: "url/wp-admin/admin-ajax.php",
            type:'POST',
            dataType: 'json',
            data:{
                action: 'word_autocomplete'
            },

            success: function(data) {
                return data;
            }

        });

    }

});

【问题讨论】:

  • 看起来您必须使用返回的数据设置标签和值字段..
  • 我从那个例子开始构建我的函数,但我不能让它工作。我不需要重新处理我的数据,因为它的格式已经适合自动完成。
  • 您必须对返回数据的每个元素调用response 函数,不能只返回数据。请参阅链接到的示例 @sof。
  • 谢谢大家,您指出了问题,我解决了。因为我的声望点不到 10,所以我稍后会发布答案。

标签: php jquery-ui jquery


【解决方案1】:

jQuery( "#input_2_5" ).autocomplete({
来源:函数(请求,响应){

    jQuery.ajax({
        url: "url/wp-admin/admin-ajax.php",
        type:'POST',
        dataType: 'json',
        data:{
            action: 'word_autocomplete'
        },
        success: function (data) {
                if (data.d != null) {
                    response($.map(data.d, function (item) {
                        return {
                            value: item.name
                        }
                    }));
                }

            }
    });
}

});

【讨论】:

    【解决方案2】:

    这个公式对我有用:我的是一个 jsonp 请求,但应该这样做:

    jQuery( "#input_2_5" ).autocomplete({
        source: function( request, response ) {
                        $.ajax({
                            url: "url/wp-admin/admin-ajax.php",
                            type: 'POST',
                            data: 'searchterm=' + request.term,
                            success: function( data ) {
                                response( $.map( data, function ( item ) {
                            return item;
                        }));
    
                            }
        });
    

    显然您的服务器端应该在查询字符串中寻找“searchterm”...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      相关资源
      最近更新 更多