【问题标题】:Sending Primary Key of object via Ajax通过 Ajax 发送对象的主键
【发布时间】:2018-01-28 04:16:06
【问题描述】:

如何通过 AJAX 发送 SELECTED 对象的主键(pk)。我试过 {{pk}},但没有成功。我收到一个错误“未捕获的错误”意外令牌}

{% extends 'homepage.html' %}
{% load staticfiles %}

{% block teacher_diary %}
<script language="JavaScript"  src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        $('#grade_list').change(function(){
        var element = document.getElementById("grade_list");
        var value = element.options[element.selectedIndex].value;
    $.ajax({
        url: "get_subject/",
        type: "get",
        data: {
            'grade_id': value.{{ pk }}
        },
        dataType: "json"
    });

})});
</script>
<select id="grade_list">
    {% for grade in grades %}
        <option >{{ grade }}</option>
    {% endfor %}
</select>

【问题讨论】:

    标签: python ajax django django-templates


    【解决方案1】:

    标识为value 的变量没有任何名为{{pk}} 的属性。在将 HTML 发送到客户端之前,双花括号的使用保留用于模板的服务器端处理。客户端没有 Django 对象的概念。希望这具有直观意义。

    就解决方案而言,这是我可能会做的事情。首先,给每个选项一个自定义属性data-pk,用于存储来自服务器端的pk。

    <select id="grade_list">
        {% for grade in grades %}
            <option data-pk={{grade.pk}} >{{ grade }}</option>
        {% endfor %}
    </select>
    

    然后,使用 JavaScript 访问 pk (如果您选择使用 JQuery,有更简单的方法)。

        var element = document.getElementById("grade_list");
        var value = element.options[element.selectedIndex];
        $.ajax({
            url: "get_subject/",
            type: "get",
            data: {
                'grade_id': value.getAttribute("data-pk");
            },
            dataType: "json"
        });
    

    【讨论】:

      猜你喜欢
      • 2015-12-19
      • 1970-01-01
      • 2011-10-19
      • 2018-11-09
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 2016-12-01
      相关资源
      最近更新 更多