前台可以获取到表格的JSON数据,但是通过AJAX POST提交后台没有接收到数据。
这里贴的都是主要部分,其他的我就省略了,使用了bootstrap-table
插件和bootbox
插件,后台使用Thinkphp3.2.3。
<p id="toolbar" class="btn-group">
...
<button class="btn btn-default" id="btn_del">
<span class="glyphicon glyphicon-remove" aria-hidden="true">删除</span>
</button>
...
</p>
<table id="studentTable"></table>
table是通过插件.bootstrapTable
直接创建的,主键是student_id
。
$('#btn_del').on('click', function () {
var selection = $('#studentTable').bootstrapTable('getAllSelections');
var json=JSON.stringify(selection);
function getSelectionId(data) {
var result=[];
var temp={};
for(var i=0;i<selection.length;i++){
//console.log(data[i].student_id);
var temp=data[i].student_id;
result.push(temp);
}
//console.log(result);
return result;
}
bootbox.confirm({
size: 'small',
title: 'tishi',
message: '确认要删除选中的数据吗?',
callback: function () {
$.ajax({
url: 'delStudent',
method: 'post',
data: getSelectionId(selection)
});
}
});
});
这是我最新试过的一种方法,想直接获取student_id
,但是后台还是没有获取到。
public function delStudent()
{
$post = I('post.');
dump($post);
...
}
控制台中显示的是注释掉的两行console.log()
,可以看到获取到了student_id
,然后传递的data
中也有数据(这块会不会出错?)——
然后后台是执行了AJAX请求,但是获取的POST数据不正确?
这是其中一种情况,如果我把上面JS代码中AJAX提交的数据改为data:JSON.stringify(selection)
提交的结果如下:
目前还是不知道问题出在哪里?
目前已知应该是JSON数据问题……我试了下直接传值,显示结果一样。就是我直接从控制台输出数据中复制到代码中——
然后后台返回结果还是一样的……
请问这个有解决办法吗?
怪我咯2017-04-11 12:48:17
问题解决了……主要问题就是bootstrapTable获取数据的问题,官方文档上写的就是 Return selected rows, when no record selected, an empty array will return.
意思就是返回的是一个JSON数组。所以直接调用就行~
$.ajax({
...
data:{json:selection}
});
这样返回的数组就是在POST['json']
中了~,然后后台直接读取就是
$post=I('post.json');//我用的是TP3的内置函数,这样读出来的数据都在$post数组中了
结果如下: