【问题标题】:Render HTML of an AJAX response呈现 AJAX 响应的 HTML
【发布时间】:2018-10-31 10:02:55
【问题描述】:

我正在使用 Select2 AJAX 远程选项来获取数据:

$('#t').select2({
    ajax: {
        url: '../ajax/results.php',
        data: function (params) {
            return {
                search: params.term,
                page: params.page || 1
            };
        }
    }
});

到目前为止一切顺利,结果返回如下(请注意<small> 标签):

{
    "results": [
        {
            "id": "1",
            "text": "Doe Joe, <small>Mr.</small>"
        },
        {
            "id": "2",
            "text": "Smith Anne, <small>Mrs.</small>"
        },
        {
            "id": "3",
            "text": "Rossi Mario, <small>Mr.</small>"
        },
        ...
     ],
     "pagination": {
         "more": false
     }
}

&lt;select&gt; 中,&lt;small&gt; 标记按原样打印,而不是被解析。 Select2 docs says that HTML are not rendered 默认情况下,渲染结果必须包装在 jQuery 对象中才能工作,但没有给出更多示例。

所有涉及templateResult的例子,确实没有给出如何通过AJAX结果的反馈(即https://select2.org/dropdown#templating

请帮忙?

【问题讨论】:

    标签: ajax jquery-select2


    【解决方案1】:

    templating example 是对的,我只需要将所有内容都包装在 &lt;span&gt; 标记中即可:

    function formatItem (item) {
        if (!item.id) {
            return item.text;
        }
        return $('<span>' + item.text + '</span>');
    }
    
    $('#t').select2({
        ajax: {
            url: '../ajax/results.php',
            data: function (params) {
                return {
                    search: params.term,
                    page: params.page || 1
                };
            }
        },
        templateResult: formatItem,
        templateSelection: formatItem
    });
    

    【讨论】:

    • 我一直在寻找这个答案好几个小时了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    相关资源
    最近更新 更多