如何通过jquery $ .post

时间:2017-01-09 06:27:18

标签: javascript java jquery servlets

我尝试使用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" )从服务器,我得到一个空指针,为什么会发生这种情况?如何提交两个具有相同名称的不同值?

1 个答案:

答案 0 :(得分:1)

  

从jQuery 1.4开始,$.param()方法序列化深层对象   递归地适应现代脚本语言和框架   例如PHP和Ruby on Rails。您可以禁用此功能   全局设置jQuery.ajaxSettings.traditional = true;

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

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

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

但要注意:

  

从jQuery 3.0开始,$.param()方法不再使用   jQuery.ajaxSettings.traditional作为默认设置并且会   默认为false

因此,如果你使用jQuery 3.x,你应该在你的请求的traditional中明确设置settings选项。

据我所知,.load()函数不支持settings参数,因此请改用.ajax()

如果要序列化数组而不将settings添加到param名称,则traditional: true参数应包含[]