我有一个非常讨厌的问题我的基于Jquery的ajax实时搜索。搜索本身正在工作,但每当我的查询字符串包含'ő'和'ű' - 只有这两个字符 - 时,req.getParameter(“sstring”)的值为 null !如果查询字符串没有提到的字符,则它会成功返回值。 我尝试了所有可能的编码,包括UTF-8,但使用8859-2解决了。
$.ajax({
type:"GET",
url: "/myApp/Protected/getStd",
contentType: "application/x-www-form-urlencoded; charset=iso-8859-2",
dataType:"application/x-www-form-urlencoded; charset=iso-8859-2",
data:"sstring="+escape(sstring)+"&options="+id+"&startrow="+startrow+"&valid="+Valid+"¬Valid="+notValid+"&searchForm=1",
async: true,
success: function(data){
$("#external").html(data);
}
})
我必须突出显示,只有在Jquery传递查询字符串时才会出现问题。如果我手动将QueryString输入浏览器,Servlet会正确地获取它。 非常感谢任何帮助。
答案 0 :(得分:0)
使方法POST。
type:"POST",
您没有说方法是GET,而是将数据作为请求正文的一部分传递。 GET请求完全基于URL。
如果您想使用GET,请执行以下操作:
$.ajax({
type:"GET",
url: "/myApp/Protected/getStd?sstring="+escape(sstring)+"&options="+id+"&startrow="+startrow+"&valid="+Valid+"¬Valid="+notValid+"&searchForm=1",
async: true,
success: function(data){
$("#external").html(data);
}
})
答案 1 :(得分:0)
根据对该问题的评论:
INFO: sstring=min%u0151&options=1&startrow=0&valid=true¬Valid=true&searchForm=1
sstring
参数未正确进行网址编码。您需要encodeURIComponent()
而不是escape()
。