我的页面上方有一个表格
<form method="post" id="rrrform">
<table class="table table-bordered" id="myTable">
<thead>
<tr>
<th>R400th>
<th>R401th>
tr>
thead>
<tbody>
{% for item in obj %}
<tr>
<td name="r400">{{ item.r400 }}td>
<td name="r401">{{ item.r401 }}td>
tr>
{% endfor %}
tbody>
table>
form>
JS代码
/*******转存表格数据*******/
$(function() {
$('#btn3').click(function() {
var json_obj = {
data:$('#rrrform').serialize()
}; //JSON对象
var json_str = JSON.stringify(json_obj); //将JSON对象转变成JSON格式的字符串
$.post("/kankan", json_str, callback, "json");
})
})
/kankan路由对应的python后端函数
request.POST打印出来的结果为
@csrf_exempt
def kk(request):
print(request.POST)
#中间省去无关代码
return render(request, 'sr_list7.html', context)
请问应该怎么办?有帮助必采纳!
得用类似<input> <checkbox><select>这类的控件。你的form表单里,没有任何的输入控件,肯定是什么也获取不到。
{% for item in obj %}
<tr>
<td ><input type="text" name="r400" value="{{ item.r400 }}"></td>
<td ><input type="text" name="r401" value="{{ item.r401 }}"></td>
</tr>
{% endfor %}
调试一下接受数据的代码看看哪里错误。
参考GPT和自己的思路:
根据代码的情况,可以看出问题在于使用了serialize()方法来将表单数据序列化成字符串,而使用此方法无法序列化JSON数据,因此需要使用另一种方法来处理JSON数据。可以使用jQuery的serializeArray()方法来将表单数据转化为JSON对象,然后再使用JSON.stringify()方法将其转化为JSON字符串。
修改JS代码如下:
$(function() {
$('#btn3').click(function() {
var data = {};
var serializedData = $('#rrrform').serializeArray();
$.each(serializedData, function() {
data[this.name] = this.value;
});
var json_str = JSON.stringify(data);
$.post("/kankan", json_str, callback, "json");
})
})
同时,需要将HTML代码中的name属性修改为id属性:
<form method="post" id="rrrform">
<table class="table table-bordered" id="myTable">
<thead>
<tr>
<th>R400</th>
<th>R401</th>
</tr>
</thead>
<tbody>
{% for item in obj %}
<tr>
<td id="r400">{{ item.r400 }}</td>
<td id="r401">{{ item.r401 }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</form>
这样修改后,再次提交数据,就可以在后端函数中通过request.POST获取到正确的数据了。
不知道你这个问题是否已经解决, 如果还没有解决的话: