AJAX Post不发送表单数据

我在下面有以下AJAX POST ,出于某种原因查看我的日志记录(服务器端),它发送的请求是空白{}而不是发送JSON数据。 我已经用尽所有可能的服务器端问题这是客户端问题,脚本不发送数据。 为什么?

bootstrap-wizard.js在这里找到 – > GitHub

我的页面代码会覆盖脚本提交:

   $(function() { var options = {width:1000}; var wizard = $("#some-wizard").wizard(options); $("#open-wizard").click(function() { wizard.show(); }); wizard.on("submit", function(wizard) { $.ajax({ url: '/api/v1/rewards/campaigns/', type: 'POST', contentType: 'application/json; charset=UTF-8', data: $('#wizard').serialize(), beforeSend: function (request) { request.setRequestHeader("X-CSRFToken", $('input[name="csrfmiddlewaretoken"]').val()); }, success: function(data, textStatus) { wizard.submitSuccess(); // displays the success card wizard.hideButtons(); // hides the next and back buttons wizard.updateProgressBar(0); // sets the progress meter to 0 console.log('success'); }, error: function(errorThrown){ // data = JSON.parse(errorThrown.responseText); wizard.submitError(); // display the error card wizard.hideButtons(); // hides the next and back buttons console.log(errorThrown); } }); }); });  

这是我的表格:

 
{% csrf_token %}

{% trans "Setup Wizard" %}

{% trans "General" %}

etc, etc <=== all my form fields here

serialize()返回键/值格式的URL编码数据(x-www-form-urlencoded),而不是JSON。 如果您的服务器端需要JSON,那么您需要更改数据参数:

 $.ajax({ ... data : JSON.stringify({ input_a : 'value a', input_b : 'value b' }), ... }); 

有关如何自动将表单转换为JSON,请参阅此问题 。