当querystring有'ő'或'ű'并且请求由JQuery ajax发出时,Java Servlet req.getParameter(“param”)为null

时间:2011-02-24 17:13:26

标签: java jquery servlets character-encoding

我有一个非常讨厌的问题我的基于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+"&notValid="+notValid+"&searchForm=1",

            async: true,
    success: function(data){
    $("#external").html(data);

    }
 })

我必须突出显示,只有在Jquery传递查询字符串时才会出现问题。如果我手动将QueryString输入浏览器,Servlet会正确地获取它。 非常感谢任何帮助。

2 个答案:

答案 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+"&notValid="+notValid+"&searchForm=1",
    async: true,
    success: function(data){
    $("#external").html(data);

    }
 })

答案 1 :(得分:0)

根据对该问题的评论:

INFO: sstring=min%u0151&options=1&startrow=0&valid=true&notValid=true&searchForm=1

sstring参数未正确进行网址编码。您需要encodeURIComponent()而不是escape()