我的ajax调用没有'发送utf - 8参数到我的服务器

时间:2013-02-03 11:37:44

标签: javascript ajax

我在java中使用方法FindEl(string myel)获得了一个接受utf-8字符串paraeter的web服务

select查询应该找到以此字符串开头的所有元素 这是Java中的代码 - 用于我的Web服务
 公共课程locselall     {

public String FindEl(String myel ) throws ClassNotFoundException 
{
//
    String selectQuery = "select biz_subject from pl_biz WHERE biz_subject ILIKE '"+ myel + "%'";
//get rows 
    }

当我输入浏览器来测试我的网络服务时我没有问题,我选择了:

http://localhost:9091/locselall/services/locselall/FindEl?myel=СИТ

它有效;


这是向服务器发送请求的html页面

html>
<head>
<script>

var xmlhttp;
    if (window.XMLHttpRequest) 
    {
        xmlhttp = new XMLHttpRequest();
    } 
    else 
    {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
function triming()
{

var strInput= document.getElementById('txtInput').value;
// for example I enter "ШИФ " - utf  8 cahracters
var newstr = strInput.replace(/[^\u0400-\u04FF0-9]/gi, '');

         xmlhttp.onreadystatechange = function() 
        { 
            if (xmlhttp.readyState==4 && xmlhttp.status==200) 
            {
                alert(xmlhttp.responseText);
                //var xmlObj = xmlhttp.responseXML;   
                //var textXML = xmlObj.documentElement.firstChild.firstChild.nodeValue;

            }

        }

        var url = "http://localhost:9091/locselall/services/locselall/FindEl?myel="+ newstr;

        document.getElementById('pr').innerHTML = url;
        xmlhttp.open("GET", url, true);
        xmlhttp.send(); 


}

</script>

</head>
<body>
<input type= "text" id="txtInput"   />
<input type="button" id="btnSearch" onClick = "triming();"/>
<div id="pr"></div>


</body>
</html>

如您所见,我有一个网址提醒,它与我在浏览器中输入的用于测试我的网络服务的网址完全相同 - 但服务器的响应是没有选择记录3


我认为问题在于我的变量newstr拥有utf-8(cyrilic)字符串并且它没有正确发送到服务器,因此它无法选择任何记录!

我尝试了什么

  1. 使用charset = utf -8
  2. 添加了元标记

    没什么

    1. 我读到他的问题可能在我的tomcat服务器上,我添加了
    2. server.xml文件中的URIEncoding =“utf-8”

      <Connector port="8080" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="8443" 
                     URIEncoding="UTF-8"/>
      

      仍然没有

      提前致谢

1 个答案:

答案 0 :(得分:1)

尝试在发送的网址上使用encodeURIComponent。我似乎记得以前看过这个问题,它与拉丁字母字符有关,但西里尔字母失败了。

var url = "http://localhost:9091/locselall/services/locselall/FindEl?myel=" + encodeURIComponent(newstr);