我在Javascript中有以下名为itemInfo的对象 -
itemInfo = {
catalogId:[{"catId":"RS-122-2001","quantity":"1"},{"catId:"RS-122-2002","quantity":"1"}]
}
我将这个对象通过ajax传递给java控制器 -
$.ajax({
type: 'GET',
url: '/bin/path/servlet',
dataType: 'text',
data: {
productId: itemInfo.catalogId,
operation: "addToCart"
},
success: function(obj) {
if (obj) {
//do something
}
},
error: function(request, status, error) {
console.log(request.responseText);
}
});
当我看到请求时,它就像这样发送 -
<<hostName>>/bin/path/servlet?productId%5B0%5D%5BcatId%5D=RS-122-2001&productId%5B0%5D%5Bquantity%5D=1&productId%5B1%5D%5BcatId%5D=RS-122-2002&productId%5B1%5D%5Bquantity%5D=1&operation=addToCart
解码后的网址参数如下所示 -
productId[0][catId]=RS-122-2001&productId[0][quantity]=1&productId[1][catId]=RS-122-2002&productId[1][quantity]=1&operation=addToCart
它在Java中没有任何意义,传递的值不可读。实施有问题吗?如何在Java控制器中检索传递的值?
答案 0 :(得分:0)
尝试对数据进行字符串化处理:
productId: JSON.stringify(itemInfo.catalogId)
顺便说一下,我认为通过“GET”方法发布复杂对象并不是一个好主意。 我建议更改您的servlet以接受方法“POST”,然后将您的脚本类型修改为“POST”。