目前,我正在以这种方式通过代码发送数据,并且可以正常工作,但是如何在json中发送整个表单呢?
代码:
$.ajax({ url : window.location.href, // the endpoint,commonly same url type : "POST", // http method data : { csrfmiddlewaretoken : csrftoken, email : email, password : password, username : username, dob : dob, }, // data sent with the post request
我想使用formdata json 发送和检索包括 csrfmiddlewaretoken 在内的所有内容。
我已经尝试过类似的方法:
var formData = new FormData($('#my_form'); formData.append('csrfmiddlewaretoken', '{{ csrf_token }}'); $.ajax({ url : window.location.href, // the endpoint,commonly same url type : "POST", // http method data : formData, // data sent with the post request
但是,由于某些原因,这不起作用。我如何使它工作?
您需要将json序列化表单数据作为一个参数发送,将csrf令牌作为另一个参数发送,因为每个POST请求都希望在其中包含一个csrf令牌。
csrfmiddlewaretoken = $("#add_member_Form").find("input[name='csrfmiddlewaretoken']" ).val(); formData = $('#add_member_Form').serializeArray(); formData = JSON.stringify(formData); $.ajax({ url : url, data : { "csrfmiddlewaretoken" : csrfmiddlewaretoken, "formData" : formData }, method: "POST", dataType : "json",
在服务器端,您需要反序列化数据。
form_data_dict = {} form_data_list = json.loads(form_data) for field in form_data_list: form_data_dict[field["name"]] = field["value"] return form_data_dict