javascript - Ajax 参数在传递到 Java Controller 时会被加密

标签 javascript java jquery ajax

我在 Javascript 中有以下名为 itemInfo 的对象-

   itemInfo = {

catalogId:[{"catId":"RS-122-2001","quantity":"1"},{"catId:"RS-122-2002","quantity":"1"}]

}

我通过 ajax 将此对象传递给 java Controller -

    $.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

解码后的 URL 参数如下所示 -

productId[0][catId]=RS-122-2001&productId[0][quantity]=1&productId[1][catId]=RS-122-2002&productId[1][quantity]=1&operation=addToCart

它在 Java 中没有任何意义,并且传递的值不可读。执行有问题吗?如何在 Java Controller 中检索传递的值?

最佳答案

尝试对您的数据进行字符串化:

productId: JSON.stringify(itemInfo.catalogId)

顺便说一句,我认为通过“GET”方法发布复杂对象不是一个好主意。 我建议更改您的 servlet 以接受方法“POST”,然后将脚本类型修改为“POST”。

关于javascript - Ajax 参数在传递到 Java Controller 时会被加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39161739/

相关文章:

java - 跨多个域的 Tomcat 集成 Windows 身份验证

javascript - 使用 jQuery 动态添加两个表单元素

javascript - jquery禁用表单元素

jquery 遍历输入值并获取总和

javascript - Typecscript 是否与 IE9 100% 兼容——如果不是,它会在你编码时提示它不能做什么吗?

javascript - 将简单的 jQuery 动画转换为 zepto.js?

javascript - 如何自定义iframe右键弹窗

java - 使用 htmlunit 下载 javascript 按钮后面的文件

javascript - 处理状态更新对象

java - 字符串和新字符串有什么区别?