无法使用jQuery(Django)序列化表单

时间:2016-04-15 17:27:38

标签: javascript jquery django

我有一个模板

  <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>

(实际上,它是模板的一部分,但其余部分是blockextends等等。

我尝试将此表单序列化以使用AJAX请求发送,但此代码

$("#question-form").serialize()

无法正常工作,只返回

  

csrfmiddlewaretoken = yYa3KW1pFWCAquX3FUsbMOHTfXE2z8g3

表格渲染正确,我看到所有无线电元素和其他元素。

3 个答案:

答案 0 :(得分:1)

也许你可以使用

$("#question-form").serializeArray();

以下是您可以使用或查看想法的解决方案。希望这有帮助!

https://jsfiddle.net/gabrieleromanato/bynaK/

答案 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)

愚蠢的错误:我没有选择任何无线电元素,所以没有任何反应。