javascript - 为什么我的数组参数不在 POST 请求中?

标签 javascript jquery

在 laravel 5.7/jquery 3 应用程序中,我保存了数据数组,但在浏览器的控制台中失败了,我在提交表单时看到了这一点 POST 请求中仅发送 _token 参数:

let todos_count = $("#todos_count").val()
// alert( "saveTodoDialog todos_count::"+var_dump(todos_count)  +"  csrf_token::"+csrf_token )

let todosList = [];
for (let i = 0; i < todos_count; i++) {
    let todoItem = []
    todoItem['modified'] = $("#modified_" + i).val();
    todoItem['todo_text'] = $("#todo_text_" + i).val();
    todoItem['todo_priority'] = $("#todo_priority_" + i).val();
    todoItem['todo_completed'] = $("#todo_completed_" + i).val();
    alert("todoItem::" + var_dump(todoItem))
    todosList[todosList.length] = todoItem
}

console.log("todosList::")
console.log(todosList)
alert(todosList.length + "todosList::" + var_dump(todosList))

let href = "/admin/save-todo-page";
$.ajax({
    type: "POST",
    dataType: "json",
    url: href,
    data: {"_token": csrf_token, "todosList": todosList},
    success: function (response) {
        popupAlert("Todo items were saved successfully !", 'success')
    },
    error: function (error) {
        popupErrorMessage(error.responseJSON.message)
    }
});

我的 todosList 数组已正确填充:

但它不是 POST 请求者。为什么?

谢谢!

最佳答案

与 PHP 不同,JavaScript 对数组有非常严格的行为,因为它们始终采用数字索引。

在您的代码中:

let todoItem = []
todoItem['modified'] = $("#modified_" + i).val();

这是不允许的,因为您有一个数组,但尝试将其用作对象。这只会在数组对象上创建自定义属性,但实际上不会向底层数组添加任何内容。这在控制台中应该很明显,其中您的 todosList 数组是由 3 个长度为 0 的数组组成的数组。

您可以通过执行以下操作来使其发挥作用:

let todosList = [];
for (let i = 0; i < todos_count; i++) {
    let todoItem = {
        modified: $("#modified_" + i).val(),
        todo_text: $("#todo_text_" + i).val(),
        todo_priority: $("#todo_priority_" + i).val(),
        todo_completed: $("#todo_completed_" + i).val()
    }; //Object initialiser
    todosList.push(todoItem);
}

其余代码应该按原样工作

关于javascript - 为什么我的数组参数不在 POST 请求中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55294690/

相关文章:

JavaScript 单元测试 : how do you keep track of all the tests you have written and what code coverage you have?

javascript - $scope.$on ('$destroy' , ...) 的事件处理程序是否被销毁?

javascript - 动态更新Chart.js绘制折线图数据集数据

php - 图像替换

javascript - 使用 tcomb,我是否遗漏了某些内容或者无法定义实例函数?

javascript - HTML/JS Canvas 在对象之间绘制线

javascript - 在 Firefox 中失败

javascript - 使 jquery 上加载的图像在单个图像中淡入淡出

Jquery Tooltip 图片预览左上放置导致错误

jquery - ReplaceWith 第二次不起作用