Javascript 在ajax调用中,数据作为空json数组对象传递

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

我将JSON数据作为参数传递给ajax调用,如

                  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
};