使用ajax调用webservice时,尽量使用ie浏览器,如果使用chrome或者是firefox浏览器,很可能会出现异常
服务器端代码的书写(可以参考使用jdk调用webservice中的代码,两者是基本相同的)
- <html>
- <head>
- <title>通过ajax调用WebService服务</title>
- <script>
- function getXhr(){
- var xhr = null;
- if(window.XMLHttpRequest){
- //非ie浏览器
- xhr = new XMLHttpRequest();
- }else{
- //ie浏览器
- xhr = new ActiveXObject('Microsoft.XMLHttp');
- }
- return xhr;
- }
- var xhr =getXhr();
- function sendMsg(){
- var name = document.getElementById('name').value;
- //服务的地址
- var wsUrl = 'http://127.0.0.1:6790/hello';
- //请求体
- var soap= '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://webservice.njupt.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'
- +'<soapenv:Body><q0:sayHello><arg0>'+name+'</arg0> </q0:sayHello></soapenv:Body></soapenv:Envelope>';
- //打开连接
- xhr.open('POST',wsUrl,true);
- //重新设置请求头
- xhr.setRequestHeader("Content-Type","text/xml;charset=UTF-8");
- //设置回调函数
- xhr.onreadystatechange = _back;
- //发送请求
- xhr.send(soap);
- }
- function _back(){
- if(xhr.readyState == 4){
- if(xhr.status == 200){
- //alert('调用Webservice成功了');
- var ret = xhr.responseXML;
- var msg = ret.getElementsByTagName('return')[0];
- document.getElementById('showInfo').innerHTML = msg.text;
- //alert(msg.text);
- }
- }
- }
- </script>
- </head>
- <body>
- <input type="button" value="发送SOAP请求" onclick="sendMsg();">
- <input type="text" id="name">
- <div id="showInfo">
- </div>
- </body>
- </html>