在 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
数组是长度为 0 的 3 个数组的数组。
您可以通过执行以下操作来使其工作:
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);
}
其余代码应按原样工作
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句