如何通过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>
答案 0 :(得分:0)
标识为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"
});