gpt4 book ai didi

javascript - 如何通过 jquery $.post 提交多个同名的不同值

转载 作者:行者123 更新时间:2023-12-03 05:17:34 24 4
gpt4 key购买 nike

我正在尝试使用 Jquery post 方法提交多个参数,这是我编写代码的方式。jQuery:

$(document).on("input",".li-add input", function() {
var input = $("#add-purposes").val();
if(input != "") {
$("#outter-d-1").load("/UniHealths/UNCManageDataDictionaryServlet?type=search #d-1", {
queryString:input,
resultUrl:"/dictionary/treatment",
resultSetName:"dictionary_conditions",
queryType:["CONDITION","SYMPTOM"]
});
} else {
$("#d-1").empty();
}
})
我使用 queryType 作为参数名称,它在数组中有两个值,当我从服务器使用 HttpServletRequest 的方法 getParameter("queryType") 时,我得到一个空指针,为什么会出现这种情况?如何提交两个具有相同名称的不同值?

最佳答案

As of jQuery 1.4, the $.param() method serializes deep objects recursively to accommodate modern scripting languages and frameworks such as PHP and Ruby on Rails. You can disable this functionality globally by setting jQuery.ajaxSettings.traditional = true;

这也意味着,数组将被序列化为 paramName[](请注意末尾的 [])。

因此,在您的情况下,服务器接收的参数名称为:queryType[],而不是queryType

要改变此 jQuery 行为,您可以设置jQuery.ajaxSettings.traditional = true; 在发送请求之前。

但要注意:

As of jQuery 3.0, the $.param() method no longer uses jQuery.ajaxSettings.traditional as its default setting and will default to false.

因此,如果您使用 jQuery 3.x,则应在请求的settings 中显式设置traditional 选项。

据我所知,.load()函数不支持settings参数,所以使用.ajax()相反。

如果您想序列化数组而不在参数名称中添加 [],则 settings 参数应包含 traditional: true

关于javascript - 如何通过 jquery $.post 提交多个同名的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41542146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com