【问题标题】:jQuery autocomplete will not loop through XML datajQuery 自动完成不会循环遍历 XML 数据
【发布时间】:2016-07-18 04:24:44
【问题描述】:

目前,我似乎无法从我的 XML 文件中检索任何数据。下面是代码;

$(document).ready(function() {
    setTimeout(function() {
        $('#_Q0').autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: "brands.xml",
                    dataType: "xml",
                    type: "GET",
                    success: function(xml) {
                        var results = [];
                        $(xml).find("brand").each(function() {
                            if (results.indexOf(request.term.toUpperCase()) >= 0) {
                                results.push(results);
                            }
                        });
                        response(results);
                    }
                });
            },
            autoFocus: true,
            minLength: 3,
            response: function(event, ui) {
                if (!ui.content.length) {
                    var noResult = {
                        value: "",
                        label: "No results found"
                    };
                    ui.content.push(noResult);
                }
            }
        });
        var render = $('#_Q0').autocomplete('instance')._renderMenu;
        $('#_Q0').autocomplete('instance')._renderMenu = function(ul, items) {
            items.push({
                label: 'AUTRE MARQUE',
                value: 'AUTRE MARQUE',
                last: true
            });
            render.call(this, ul, items);
        };
    }, 100);
});

这是一个Plunk;

https://plnkr.co/edit/QFOYcJc7iQ8UQc0e5SKH?p=preview

我以前使用 JSON 源,但现在必须切换到 XML。

提前致谢

【问题讨论】:

标签: javascript jquery xml jquery-ui autocomplete


【解决方案1】:

问题在于处理 xml

$(document).ready(function() {
  setTimeout(function() {
    $('#_Q0').autocomplete({
      source: function(request, response) {
        $.ajax({
          url: "brands.xml",
          dataType: "xml",
          type: "GET",
          success: function(xml) {
            var term = request.term.toLowerCase();
            var results = $(xml).find("brand").filter(function() {
              return $(this).attr('label').toLowerCase().indexOf(term) > -1;
            }).map(function() {
              return {
                label: $(this).attr('label')
              }
            }).get();
            response(results, xml);
          }
        });
      },
      autoFocus: true,
      minLength: 3,
      response: function(event, ui) {
        if (!ui.content.length) {
          var noResult = {
            value: "",
            label: "No results found"
          };
          ui.content.push(noResult);
        }
      }
    });
    var render = $('#_Q0').autocomplete('instance')._renderMenu;
    $('#_Q0').autocomplete('instance')._renderMenu = function(ul, items) {
      items.push({
        label: 'AUTRE MARQUE',
        value: 'AUTRE MARQUE',
        last: true
      });
      render.call(this, ul, items);
    };
  }, 100);
});

演示:Plunker

【讨论】:

  • 完美!非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多