繁体   English   中英

如何处理JSON响应并从中输出html?

[英]How to process a JSON response and output html from it?

到目前为止,我已经使用django模板系统来执行这种操作。 只需使用html模板响应ajax请求即可。

现在我正在尝试实现自动完成搜索功能,我想以json格式向客户端发送响应。

一切都好,并设置到这一点。 这是我的jQuery部分:

$(document).ready(function(){
    $("#id_q").keyup(function(){ //the form text input
        autocomplete(this.value);
    });

    function autocomplete(inputString) {
        if(inputString.length == 0) {
            $('#autocomplete').fadeOut();
        }
        else {
            $.get("/autocomplete/", {q: ""+inputString+""}, function(data) {
                $('#autocomplete').fadeIn();
                $('#autocomplete').html(data);
            });
        }
    }
});

当使用django模板作为响应时,#autocomplete div显示出很好的效果和预期的.html(数据),那是因为我之前在模板中设置了html,因为我想要显示它。

如何处理从服务器发送的数据(以json格式)? 数据看起来像这样:

[{'title':'titleString', 'descr':'desriptionString', 'url':'itemAbsoluteUrl'}, ..]

为了获得我的#autocomplete html,比如说:

<li><a href="data.url">data.title<br>data.descr</li>

感谢您的任何反馈!

首先,为了将返回数据格式化为JSON对象,您需要在get调用中指定返回类型为json。 之后,您将基于json键值对引用数据,例如data.results。 (请注意,结果必须是JSON对象中的键)。

$.get("/autocomplete/", {q: ""+inputString+""}, function(data) {
            $('#autocomplete').fadeIn();
            $('#autocomplete').html(data.results);
}, "json");

我不确定您当前的格式是什么,但只是为了澄清,您可能不希望通过JSON发送原始HTML。 相反,将HTML保留在客户端页面上,并返回一些数据来填充它。

尝试

var li = $('<li><a href="'+data.url+'">'+data.title+'<br/>'+data.descr+'</a></li>')

然后你可以在你想要的地方插入li ,或者

$('#autocomplete').html('<li><a href="'+data.url+'">'+data.title+'<br/>'+data.descr+'</a></li>');

迭代结果

$.each(results, function(index, value){
...
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM