我需要提交一个JSON对象数组
[{"id":"321","position":"2"},{"id":"359","position":"3"}]
所以我试过
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': _token
}
});
table.on( 'row-reorder', function ( e, diff, edit ) {
var myArray = [];
for ( var i=0, ien=diff.length ; i<ien ; i++ ) {
var rowData = table.row( diff[i].node ).data();
myArray.push({
id: rowData.id, // record id from datatable
position: diff[i].newData // new position
});
}
var jsonString = JSON.stringify(myArray);
//jsonString output an array as the one above
$.ajax({
url : "/requests/setOrder.php",
type : 'POST',
data : jsonString,
dataType: 'json',
success : function ( json )
{
$('#example23').DataTable().ajax.reload(); // now refresh datatable
$.each(json, function (key, msg) {
// handle json response
});
}
});
});
在setOrder.php
我想dump
我的数组,所以我尝试了:
$result = json_encode($_POST);
var_dump($result);
数组是否正确提交,为什么响应为空?
答案 0 :(得分:1)
首先你需要删除var jsonString = JSON.stringify(myArray);
- 数据不应该在“数据”字段中以“json”的形式发送 - jQuery为你做了
在发送数据之前,您应该将其分配给变量:
data : {data: myArray}
同样在后端,您应该使用$result = json_decode($_POST['data']);
您的完整代码应为:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': _token
}
});
table.on( 'row-reorder', function ( e, diff, edit ) {
var myArray = [];
for ( var i=0, ien=diff.length ; i<ien ; i++ ) {
var rowData = table.row( diff[i].node ).data();
myArray.push({
id: rowData.id, // record id from datatable
position: diff[i].newData // new position
});
}
//jsonString output an array as the one above
$.ajax({
url : "/requests/setOrder.php",
type : 'POST',
data : {data: myArray},
dataType: 'json',
success : function ( json )
{
$('#example23').DataTable().ajax.reload(); // now refresh datatable
$.each(json, function (key, msg) {
// handle json response
});
}
});
});
并在PHP中: 如果你在发送之前json.stringify你的数据,你需要在这里解码它。但是,发送到服务器时不需要发送JSON。但是,您将收到JSON作为回报。
$result = $_POST['data'];
var_dump($result);
答案 1 :(得分:0)
首先在ajax中设置数据,如下所示:
data :{jsonString: jsonString},
然后在你的php文件中将$ _post设置为像
这样的变量$myVar=$_POST['jsonString'];
你得到了那样的反应