javascript - jquery 自动完成成功 JSON 映射

标签 javascript jquery autocomplete

我对 jquery UI 自动完成插件有疑问。我不知道如何映射我从服务器返回的响应。

这是 JSON 结构:

{
    categories: [
       {
          slug: "car-index",
          name: "Car",
          rank: "5"
       },
       {
          slug: "anim-index",
          name: "Animals",
          rank: "29"
       },
    ],
    queries: [
        "term1",
        "term2"
    ]
}

我的自动完成代码:

$.ajax({
        url: autocompleteUrl,
        dataType: 'json',
        data: {
                q: request.term
        },
        success: function(data) {
            response(
                $j.map( data, function(item) {
                    return {
                        name: item.categories.name,
                        slug: item.categories.slug,
                        rank: item.categories.rank,
                        query: item.queries
                    }
                 })
            );

此代码出现错误。如果我在 data.categories 上进行映射,我就可以让它工作,但我还需要来自“查询”的信息,我不知道如何从这两个地方返回结果。需要获取所有信息(查询、名称、slug、排名)才能在我的渲染函数中显示文本。

    }).data('uiAutocomplete')._renderItem = function (ul, item) {
    return $('<li></li>')
    .append('<a><span>' + item.name + '</span> - <span>Rank: ' + item.rank + '</span></a>')
    .data('ui-autocomplete-item', item)
    .appendTo(ul);

};

我真的被困在那里,有人可以帮忙吗?

谢谢

最佳答案

可以使用 name.value 表示法访问以 JSON 格式返回的数据中的对象。例如,要访问属性categories(它将返回一个数组),我们可以简单地调用data.categories。要循环返回数组中的项目,我们可以使用 $.each() .

另外,我建议您不要依赖 jqXHR.success,而是应该链接一个延迟对象并使用 .done() AJAX 调用之后:)

$.ajax({
    url: autocompleteUrl,
    dataType: 'json',
    data: {
            q: request.term
    }
}).done(function(data) {
    // Success function
    // Example of iterating through all elements in the array returned by data.categories
    $.each(data.categories, function() {
        $('<li />')
        .html('<a><span>' + this.name + '</span> - <span>Rank: ' + this.rank + '</span></a>')
        .data('ui-autocomplete-item', item)
        .appendTo('ul');
    });
});

您对返回的数据实际想要做什么以及如何将它们插入到 DOM 中有点模糊,但我已经做了一个概念验证 fiddle 来向您展示如何通过 data.categoriesdata.queries 对象:http://jsfiddle.net/teddyrised/15259aca/

关于javascript - jquery 自动完成成功 JSON 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26474897/

相关文章:

字符串中每个双字或三字的Javascript函数

javascript - 如何使用 jQuery 在所有 Ajax 请求完成后执行操作

javascript - 为什么这个 JavaScript 函数不起作用?

android - 对话框 fragment 中的自动完成 TextView 显示 Android 中的建议

javascript - 在 Bootstrap 中更改输入文本

javascript - 选项标签值属性的 jQuery 选择器返回 null

javascript - 使用表单提交在表单中添加时,Bootstrap 动态表单字段不起作用

javascript - PHP 登录脚本错误地显示 HTML 代码

javascript - JQuery UI 自动完成未到达 ActionResult C# MVC

delphi - 将自动完成字符串分配给的访问冲突