【问题标题】:render django dictionary with ajax用ajax渲染django字典
【发布时间】:2014-08-25 14:33:16
【问题描述】:

如何使用发送到 django 的 ajax 请求填充 select tag 或 ul and li tag 并返回 json(也可能来自模型)。我不想使用另一个模板来填充这些。

示例:

如果来自ajax请求的返回是data

我该怎么做:

      <select id = 'carid'>
            {% for car in cars %}
                     <option value="{{ car.name }}">{{ car.name }}</option>
            {% endfor %}
        </select>

但我不想从 django 返回 html 或仅为此标签加载另一个 html。

这是我的响应方法

 def car_view(request)

    car_obj = cars.objects.get(name = car)

    allmodels = CarModel.objects.filter(car = car_obj)

    data = serializers.serialize("json", allmodels)

    return HttpResponse(data)

这就是data 的样子

[{"pk": 3, "model": "alongjs.carmodel", "fields": {"car": 2, "name": "city-unlimited"}}, {"pk": 4, "model": "alongjs.carmodel", "fields": {"car": 2, "name": "hill-to-city"}}]`

【问题讨论】:

  • 你是如何发送 ajax 请求的? jQuery.ajax()?发布该代码及其返回的 JSON 示例
  • 我已经更新了问题
  • “数据”是什么样的?
  • 我添加了数据的外观。

标签: jquery ajax django


【解决方案1】:

如果您发送带有jQuery.ajax() 的ajax 请求(看起来您是从之前的问题判断)- 您可以在成功回调函数中添加一些JavaScript 来迭代JSON 响应并填充您的@987654327 @ 选项。

$.ajax({
  type: 'GET',
  url: ...,
  data: {},
  success: function(data) {
    $.each(data, function() {
      $('#carid')
        .append($("<option></option>")
        .attr('value', this['fields']['name'])
        .text(this['fields']['name'])); 
    });
  }
});

你可以看到一个人为的小提琴示例here。

您或许可以改进您的 JSON - 因为您只需要汽车名称。

【讨论】:

  • 感谢您的回答,它有很大帮助,但是当再次发布时,数据会被附加。我看到你添加了.append。我应该怎么做才能不一直有附加结果。
  • 您可以使用 jQuery.html('') 删除所有现有的选择选项,然后附加 JSON 响应中包含的所有新选项 - 就像这样 jsfiddle.net/pRzL5
  • 太棒了。非常感谢,正是我需要的。如果问题不大,您能否向我指出一些资源,我可以在其中了解有关此 json 解析的更多信息。再次感谢
猜你喜欢
  • 1970-01-01
  • 2020-08-10
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 2015-05-19
  • 1970-01-01
相关资源
最近更新 更多