Javascript 在ajax调用中,数据作为空json数组对象传递
我将JSON数据作为参数传递给ajax调用,如Javascript 在ajax调用中,数据作为空json数组对象传递,javascript,jquery,ajax,Javascript,Jquery,Ajax,我将JSON数据作为参数传递给ajax调用,如 var startDate = dateFormatForSave($("#start_date").val().trim()); var arrayOfStudentsInfo = []; var table = $("#selected_students"); table.find('tr').eac
var startDate = dateFormatForSave($("#start_date").val().trim());
var arrayOfStudentsInfo = [];
var table = $("#selected_students");
table.find('tr').each(function(i, el) {
var rowId = $(this).attr('id');
var actualId = rowId.substr(rowId.indexOf("_") + 1).trim();
var routeId = $("#lockedRouteId_"+actualId).text().trim();
var stopId = $("#lockedStopId_"+actualId).text().trim();
var vehicleId = $("#lockedVehicleId_"+actualId).text().trim();
var innerArray =[];
innerArray["StudentId"] = actualId;
innerArray["RouteId"] = routeId;
innerArray["StopId"] = stopId;
innerArray["VehicleId"] = vehicleId;
innerArray["StartDate"] = startDate;
arrayOfStudentsInfo.push(JSON.stringify(innerArray));
});
$.ajax({
url: 'index.php?secController=TransportAllotment&action=saveAllotmentStudentWise',
type: 'POST',
dataType: 'JSON',
data: {
arrayOfStudentsInfo: arrayOfStudentsInfo
},
success: function (data) {
showSwalPopupMessage(data['message'], data['title'], data['result'], true, '?secController=TransportAllotment&action=allotStudentWiseView');
}
});
}});
我首先收集表中的所有信息,然后根据这些信息使用数组创建一个JSON对象。当我调试代码时,所有的数据都被一个接一个地成功地添加到数组中。但当我签入inspect元素的network选项卡时,表单数据会像arrayOfStudentsInfo[]:[]一样传递。请帮忙
这是一个数组
数组设计用于存储带有数字索引的有序数据列表
当JSON.stringify
序列化数组时,它将只查看数值索引
“StudentId”
等不是数字
如果要使用命名属性,则数组不是合适的工具
改用对象
var innerArray = {};
…并更改变量名
您可以通过在对象文本中分配数据来简化代码,而不是使用一系列单独的分配来跟随它
var innerArray = {
StudentId: actualId,
RouteId: routeId,
StopId: stopId,
VehicleId: vehicleId,
StartDate: startDate
};
请注意,PHP有自己的语法,用于在POST请求中表达复杂的数据结构
如果将对象直接推送到
arrayOfStudentsInfo
中,那么jQuery将以与之兼容的格式对其进行序列化,PHP将自动对其进行解码,您可以跳过PHP中的手动JSON解码步骤。您应该更改-var innerArray=[];到var innerArray={}
那就行了。在有人说了话15分钟后,再重复一遍,把所有的解释都去掉,这是没有意义的。
var innerArray = {
StudentId: actualId,
RouteId: routeId,
StopId: stopId,
VehicleId: vehicleId,
StartDate: startDate
};