我有一个模板
<form method="POST" action="{% url 'ajax_question' %}" role="form" id="question-form">
{% csrf_token %}
{% for answer in answers %}
<div class="radio"><label name="answers-radio">
<input type="radio" name="answers-radio"
value ="{{ answer.id }}">{{ answer.text }}
</label></div>
{% endfor %}
</form>
(实际上,它是模板的一部分,但其余部分是block
,extends
等等。
我尝试将此表单序列化以使用AJAX请求发送,但此代码
$("#question-form").serialize()
无法正常工作,只返回
csrfmiddlewaretoken = yYa3KW1pFWCAquX3FUsbMOHTfXE2z8g3
表格渲染正确,我看到所有无线电元素和其他元素。
答案 0 :(得分:1)
也许你可以使用
$("#question-form").serializeArray();
以下是您可以使用或查看想法的解决方案。希望这有帮助!
答案 1 :(得分:1)
如果您在页面加载时序列化表单,那么您只是序列化初始数据(这就是为什么您只获得csrf_token
值)。相反,您希望序列化所有字段,这些字段在用户填写字段之前不会有值,并且会触发submit
。
您必须稍微调整您的表单以不立即POST(如果您计划使用ajax并将该url放在您的ajax方法中,则可以删除操作Url)。但是这样的事情对你有用:
$(document).ready(function() {
$('#question-form').on('submit', function(event){
event.preventDefault();
var form_data = $('#question-form').serialize();
});
})
答案 2 :(得分:0)
愚蠢的错误:我没有选择任何无线电元素,所以没有任何反应。