使用ajax调用webservice

使用ajax调用webservice时,尽量使用ie浏览器,如果使用chrome或者是firefox浏览器,很可能会出现异常

 

服务器端代码的书写(可以参考使用jdk调用webservice中的代码,两者是基本相同的)

 

  1. <html> 
  2.     <head> 
  3.         <title>通过ajax调用WebService服务</title> 
  4.         <script> 
  5.              function getXhr(){ 
  6.                 var xhr = null
  7.                 if(window.XMLHttpRequest){ 
  8.                     //非ie浏览器 
  9.                     xhr = new XMLHttpRequest(); 
  10.                 }else{ 
  11.                     //ie浏览器 
  12.                     xhr = new ActiveXObject('Microsoft.XMLHttp'); 
  13.                 } 
  14.                 return xhr; 
  15.             } 
  16.           var xhr =getXhr(); 
  17.             function sendMsg(){ 
  18.                 var name = document.getElementById('name').value; 
  19.                 //服务的地址 
  20.                 var wsUrl = 'http://127.0.0.1:6790/hello'
  21.                  
  22.                 //请求体 
  23.                  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">' 
  24.              +'<soapenv:Body><q0:sayHello><arg0>'+name+'</arg0> </q0:sayHello></soapenv:Body></soapenv:Envelope>'; 
  25.                           
  26.                 //打开连接 
  27.                 xhr.open('POST',wsUrl,true); 
  28.                  
  29.                 //重新设置请求头 
  30.                 xhr.setRequestHeader("Content-Type","text/xml;charset=UTF-8"); 
  31.                  
  32.                 //设置回调函数 
  33.                 xhr.onreadystatechange = _back
  34.                  
  35.                 //发送请求 
  36.                 xhr.send(soap); 
  37.             } 
  38.              
  39.             function _back(){ 
  40.                 if(xhr.readyState == 4){ 
  41.                     if(xhr.status == 200){ 
  42.                             //alert('调用Webservice成功了'); 
  43.                             var ret = xhr.responseXML; 
  44.                             var msg = ret.getElementsByTagName('return')[0]; 
  45.                             document.getElementById('showInfo').innerHTML = msg.text; 
  46.                             //alert(msg.text); 
  47.                         } 
  48.                 } 
  49.             } 
  50.         </script> 
  51.     </head> 
  52.     <body> 
  53.             <input type="button" value="发送SOAP请求" onclick="sendMsg();"> 
  54.             <input type="text" id="name"> 
  55.             <div id="showInfo"> 
  56.             </div> 
  57.     </body> 
  58. </html> 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你可以按以下步骤在前端页面中使用 AJAX 调用 WebService 的方法,获取 Excel 文件的字节流: 1. 在前端页面中引用 jQuery 库。 ``` <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> ``` 2. 创建一个用于触发 AJAX 请求的按钮。 ``` <button id="btnDownloadExcel">下载 Excel 文件</button> ``` 3. 使用 jQuery 的 AJAX 函数调用 WebService 的方法,获取 Excel 文件的字节流。 ``` $(document).ready(function() { $("#btnDownloadExcel").click(function() { $.ajax({ type: "POST", url: "WebService.asmx/DownloadExcelFile", contentType: "application/json; charset=utf-8", dataType: "json", success: function(response) { // 在这里处理下载成功后的逻辑 }, error: function(response) { alert("下载 Excel 文件失败!"); } }); }); }); ``` 在以上代码中,`type` 属性指定 AJAX 请求的类型为 POST,`url` 属性指定 WebService 的地址和方法名,`contentType` 属性指定请求的内容类型为 JSON,`dataType` 属性指定响应的数据类型为 JSON。 4. 在 AJAX 请求成功后,将 Excel 文件的字节流转换为下载链接,并模拟点击下载链接,即可下载 Excel 文件。 ``` success: function(response) { // 将字节流转换为 Blob 对象 var blob = new Blob([response.d], { type: "application/vnd.ms-excel" }); // 创建一个下载链接,将 Blob 对象赋值给链接的 href 属性 var link = document.createElement("a"); link.href = URL.createObjectURL(blob); link.download = "ExcelFile.xls"; document.body.appendChild(link); link.click(); document.body.removeChild(link); } ``` 在以上代码中,`Blob` 对象用于封装 Excel 文件的字节流,`URL.createObjectURL` 函数用于创建一个下载链接,`download` 属性用于指定下载文件的文件名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值