ajax调用中错误的javascript数组序列化
Wrong javascript array serialization in ajax call
我想在ajax调用中传递javascript对象数组。
我这样创建数组:
var itemsToEdit = [];
$(".editedItem[value='true']").closest("tr").each(function() {
var itemToEdit = {
id: $(this).find(".idInput").val(),
name: $(this).find(".nameInput").val(),
code: $(this).find(".codeInput").val()
}; // Represents SomeClass java class with fields: id, name, code
itemsToEdit.push(itemToEdit);
});
然后做ajax调用:
$.ajax({
url: "MyActionBean.action?saveChanges",
type: "Post",
dataType: "json",
data: itemsToEdit,
success: function( data ) {
alert("Oh, no");
}
});
问题是:在服务器端,我收到map的列表,而不是SomeClass对象的列表。我检查了浏览器发送的内容,是:
itemsToEdit[0][id]:4
itemsToEdit[0][name]:Florida
itemsToEdit[0][code]:FL
itemsToEdit[1][id]:3
itemsToEdit[1][name]:California
itemsToEdit[1][code]:CA
但是我显然想要这个,因为我相信这是正确的映射到List of someeclass:
itemsToEdit[0].id:4
itemsToEdit[0].name:Florida
itemsToEdit[0].code:FL
itemsToEdit[1].id:3
itemsToEdit[1].name:California
itemsToEdit[1].code:CA
我错在哪里?
(可能不是理解上下文的重要信息:我使用条纹框架,它将请求中的参数映射到称为ActionBean的字段)
谢谢!
我可以看到一些东西可能会使条纹脱落。
-
虽然你现在发送的东西不会引起问题,但你应该在你传递的数据上使用
JSON.stringify()
。 -
AJAX调用通常发送JSON对象,而不是数组。
尝试像这样发送和接收数组:
$.ajax({
url: "MyActionBean.action?saveChanges",
type: "Post",
dataType: "json",
data: {
'items': JSON.stringify(itemsToEdit)
},
success: function( data ) {
alert("Oh, no");
}
});
在另一边,检索接收到的对象的items
属性并解析它,而不是解析整个对象。
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 将Javascript数组发送到控制器ASP.NET MVC
- JavaScript数组包含一个值
- 将JavaScript数组传递给函数
- javascript:数组循环
- 将数据存储在javascript数组中以供进一步使用
- 在Javascript数组中查找绝对最大值
- JavaScript数组优化以提高性能
- 在javascript数组中分散数字
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript数组动态
- javascript数组元素是否知道其封闭数组
- 将 JSON 数组解析为 JavaScript 数组
- 将Transform和Instance Variable转换为对象的JavaScript数组
- 使用Web Html表单创建Javascript数组
- 从重复的javascript数组结果集中只获取一行
- 如何为Javascript数组()的使用准备PHP变量
- Javascript数组和函数
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)