Ajax直接调用WebService

本文介绍了如何使用Ajax直接调用WebService,强调了在拼接SOAP包时的注意事项,以及解决跨域问题的方法,特别是在实际操作中避免使用localhost来防止访问限制。同时,内容涉及到在jsp页面中结合jQuery进行动态文档操作,实现下拉框选择改变输入条件的功能。

调用接口,需要拼接SOAP包,访问页面的时候不要写localhost,这样会引起跨域的问题,访问不了。


这个jsp页面包括了根据下拉框选择,变更不同的输入条件,用到了jquery的一些文档操作方法。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>导入导出功能</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">

    <jsp:include page="/common/common.jsp"></jsp:include>

    <link rel="stylesheet" rev="stylesheet" type="text/css" href="${pageContext.request.contextPath}/skin/default/css/default.css" media="all"/>
    <script language="javascript" src="${pageContext.request.contextPath}/js/common.js"></script>

  </head>


<body>
<form id="loginform" method="post">

<div class="textbox" id="centerTextbox">

    <div class="textbox-header">
    <div class="textbox-inner-header">
    <div class="textbox-title">
        <h1>&nbsp;&nbsp;元数据信息WebService</h1>
    </div> 
    </div>
    </div>
    <div class="textbox-header">
    <div class="textbox-inner-header">
    <div class="textbox-title">
    <table  id="insertinto" class="commonTable" cellspacing="1">
            <tr>
                <td class="columnTitle_mustbe">用户名:</td>
                <td class="tableContent"><input type="text" id="auth_id"/></td>
                <td class="columnTitle_mustbe">密码:</td>
                <td class="tableContent"><input type="password" id="auth_pwd"/></td>
            </tr></table>
  <hr><br>写入数据
    </div> 
    </div>
    </div></form>
    <form id="writeform" method="post">
<div>
    <div>
        <table  id="insertinto" class="commonTable" cellspacing="1">
            <tr>
                <td class="columnTitle_mustbe">应用范围:</td>
                <td class="tableContent"><input type="text" id="Wyyfw"/></td>
                <td class="columnTitle_mustbe">应用范围名称:</td>
                <td class="tableContent"><input type="text" id="Wyyfwmc"/></td>
            </tr>
            <tr>
                <td class="columnTitle_mustbe">参数标识:</td>
                <td class="tableContent"><input type="text" id="Wcsbs"/></td>
                <td class="columnTitle_mustbe">是否启用:</td>
                <td class="tableContentAuto">
                    <select id="Wsfqy"  ><option value="0"></option><option value="1"></option></select>
                </td>
            </tr>
             <tr>
                <td class="columnTitle_mustbe">参数名称:</td>
                <td class="tableContent"><input type="text" id="Wcsmc"/></td>
                <td class="columnTitle_mustbe">是否有子元素:</td>
                <td class="tableContentAuto">
                    <select id="Wsfyzys"  ><option value="0">没有</option><option value="1"></option></select>
                </td>
            </tr>
            <tr><td class="columnTitle_mustbe">所属项目:</td>
                <td class="tableContentAuto">
                    <select id="Wssxm"  ><option value="-1">请选择</option><option value="1">档案管理</option><option value="2">省经信委</option></select>
                </td>
            </tr>
            <tr>
                <td class="tableContent" align="center" >
                    <input type="button" name="btnSubmit" value="添加" onclick="insert();"/>
                </td>
            </tr>
        </table>
    </div>
</div>
<div class="textbox-header">
    <div class="textbox-inner-header">
    <div class="textbox-title">
  <br>  查询数据
    </div> 
    </div>
    </div>
    <div>
    <div>
        <table  id="check" class="commonTable" cellspacing="1">

        <tr id="oidtr">
                <td class="columnTitle_mustbe">操作类型:</td>
                <td class="tableContent">
                <select id="czlx" name="oid" >
                <option value="qxz">请选择</option>
                <option value="gjidcx">根据编号</option>
                <option value="gjfwmccx">根据范围</option>
                <option value="gjfwmccxNz">根据范围(Nz)</option>
                <option value="gjcsbscx">根据标识</option>
                <option value="gjcsbscxNz">根据标识(Nz)</option>
                <option value="gjxmcx">根据项目</option>
                <option value="gjxmqycx">根据项目和启用</option>
                <option value="cxhyzys">查询含有子元素</option>
                </select></td>
                <td class="columnTitle_mustbe">&nbsp;&nbsp;&nbsp;&nbsp;</td>
                <td class="tableContent" align="center">
                    <input type="button" name="btnSubmit" value="查询" onclick="findMsg();"/>
                </td>
          </tr>   
        </table><br>
        <table  id="write" class="commonTable"   border="1" cellpadding="3" cellspacing="0">
        <tr id="biaoti"><td>编号</td><td>应用范围</td><td>应用范围名称</td><td>参数标识</td><td>参数名称</td><td>是否启用</td><td>是否有子元素</td><td>所属项目</td></tr>
        </table>
    </div>
</div>
 </div>

</form>
</body>
<script type="text/javascript">

            //var xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");

             /*  var xmlHttpRequest;
                    if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
                      xmlHttpRequest=new XMLHttpRequest();
                    } else {// code for IE6, IE5
                      xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
                    }  */ 

        function insert(){
        $("#loginform").form("enableValidation");
        $("#writeform").form("enableValidation");
        if($("#loginform").form("validate")&&$("#writeform").form("validate")){

         var auth_id=document.getElementById("auth_id").value;
         var auth_pwd=document.getElementById("auth_pwd").value;

        var url = "http://192.168.0.120:8080/YSJGLTest/cxf/metaServiceImpl";
        var body="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:q0=\"http://service.main.sdsj.com/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
        +"<soapenv:Header><auth><auth_id>"+auth_id+"</auth_id><auth_pwd>"+auth_pwd+"</auth_pwd></auth></soapenv:Header>"
        +"<soapenv:Body><q0:innert><yyfw>"+document.getElementById("Wyyfw").value+"</yyfw> <yyfwmc>"+document.getElementById("Wyyfwmc").value+"</yyfwmc> <csbs>"+document.getElementById("Wcsbs").value+"</csbs> "
        +"<csmc>"+document.getElementById("Wcsmc").value+"</csmc> <sfqy>"+document.getElementById("Wsfqy").value+"</sfqy> <cslb>"+document.getElementById("Wssxm").value+"</cslb> <sfyzys>"+document.getElementById("Wsfyzys").value+"</sfyzys> </q0:innert></soapenv:Body></soapenv:Envelope>";

         $.ajax({
            url:url,
            type:"POST",
            data:body,
            success:function(data){
                    alert("返回信息代码:"+data.getElementsByTagName("return")[0].innerHTML);
                },
            error:function(data){
                        var parser=new DOMParser();
                        var xmlDoc=parser.parseFromString(data.responseText,"text/xml");
                        alert(xmlDoc.getElementsByTagName("faultstring")[0].innerHTML);
                    }
            });
        }
        }
        function findMsg(){
            $("#loginform").form("enableValidation");
            $("#writeform").form("disableValidation");
            if($("#loginform").form("validate")){
            var cslx = document.getElementById("czlx").value;
            if(cslx=="qxz"){alert("请先选择操作类型填写信息!");
                return;
            }
            var id ="";
            var yyfw="";
            var yyfwmc="";
            var csbs="";
            var csmc="";
            var sfqy="";
            var sfyzys="";
            var cslb="";
            if(document.getElementById("id")!=null){
             id = document.getElementById("id").value;}
            if(document.getElementById("yyfw")!=null){
            yyfw = document.getElementById("yyfw").value;}
            if(document.getElementById("yyfwmc")!=null){
             yyfwmc = document.getElementById("yyfwmc").value;}
            if(document.getElementById("csbs")!=null){
             csbs = document.getElementById("csbs").value;}
            if(document.getElementById("csmc")!=null){
             csmc = document.getElementById("csmc").value;}
            if(document.getElementById("sfqy")!=null){
             sfqy = document.getElementById("sfqy").value;}
            if(document.getElementById("sfyzys")!=null){
             sfyzys = document.getElementById("sfyzys").value;}
            if(document.getElementById("cslb")!=null){
             cslb = document.getElementById("cslb").value;}

             var auth_id=document.getElementById("auth_id").value;
             var auth_pwd=document.getElementById("auth_pwd").value;

            var body="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" "
                 +"xmlns:q0=\"http://service.main.sdsj.com/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
                 +"<soapenv:Header><auth><auth_id>"+auth_id+"</auth_id><auth_pwd>"+auth_pwd+"</auth_pwd></auth></soapenv:Header>"
                 +" <soapenv:Body><q0:find><oid>"+cslx+"</oid> <id>"+id+"</id> <yyfw>"+yyfw+"</yyfw> <yyfwmc>"+yyfwmc+"</yyfwmc> <csbs>"+csbs+"</csbs> <csmc>"+csmc+"</csmc> <sfqy>"+sfqy+"</sfqy> <cslb>"+cslb+"</cslb> <sfyzys>"+sfyzys+"</sfyzys> "
                 +"   </q0:find> </soapenv:Body> </soapenv:Envelope>";
            var url = "http://192.168.0.120:8080/YSJGLTest/cxf/metaServiceImpl";
            /* xmlHttpRequest.open("POST", url);
            xmlHttpRequest.setRequestHeader("Content-Type","text/xml;charset=utf-8");
            xmlHttpRequest.onreadystatechange = _back;
            xmlHttpRequest.send( body );        //SOAP xml  */  

              $.ajax({
            url:url,
            type:"POST",
            data:body,
            success:function(data){
                    //var xml = xmlHttpRequest.responseXML;
                    $("#biaoti ~ tr").remove();
                     var ele = data.getElementsByTagName("return");
                     $.each(ele,function(index,obj){
                        var sfqyR;
                        if(obj.getElementsByTagName("sfqy")[0].innerHTML=="0"){sfqyR="是";}else{
                        sfqyR="否";}
                        var sfyzysR;
                        if(obj.getElementsByTagName("sfyzys")[0].innerHTML=="1"){sfyzysR="有";}else{
                        sfyzysR="没有";}
                        var ssxmR;
                        if(obj.getElementsByTagName("cslb")[0].innerHTML=="1"){ssxmR="档案管理";}else{
                        ssxmR="省经信委";}
                        $("#write").append("<tr><td class=\"columnTitle_mustbe\">"+obj.getElementsByTagName("id")[0].innerHTML+"</td>"+"<td class=\"columnTitle_mustbe\">"+obj.getElementsByTagName("yyfw")[0].innerHTML+"</td>"
                        +"<td class=\"columnTitle_mustbe\">"+obj.getElementsByTagName("yyfwmc")[0].innerHTML+"</td>"+"<td class=\"columnTitle_mustbe\">"+obj.getElementsByTagName("csbs")[0].innerHTML+"</td>"+"<td class=\"columnTitle_mustbe\">"+obj.getElementsByTagName("csmc")[0].innerHTML+"</td>"
                        +"<td class=\"columnTitle_mustbe\">"+sfqyR+"</td>"+"<td class=\"columnTitle_mustbe\">"+sfyzysR+"</td>"+"<td class=\"columnTitle_mustbe\">"+ssxmR+"</td></tr>"
                        );
                     });
                     $("#write").show();
                    /*var customerContract = ele.getElementsByTagName("csmc")[0].innerHTML;
                    document.getElementById("test").innerHTML = customerContract; */
                    },
                    error:function(data){
                        var parser=new DOMParser();
                        var xmlDoc=parser.parseFromString(data.responseText,"text/xml");
                        alert(xmlDoc.getElementsByTagName("faultstring")[0].innerHTML);
                    }
                });    
            }
        }
         /* function _back(){
            if(xmlHttpRequest.readystate==4){   //处理完成
                if(xmlHttpRequest.status==200){ //成功返回
                var xml = xmlHttpRequest.responseXML;
                    var ele = xml.getElementsByTagName("return")[0];

                    var customerContract = ele.getElementsByTagName("csmc")[0].text;
                    document.getElementById("customerContract").innerHTML = customerContract;
            }
        }
    }  */

    $(document).ready(function(){

            $('#Wyyfw').validatebox({    
                required: true,    
               missingMessage: '请填写应用范围'   
            });  
            $('#Wyyfwmc').validatebox({    
                required: true,    
               missingMessage: '请填写应用范围名称'   
            });
            $('#Wcsbs').validatebox({    
                required: true,    
               missingMessage: '请填写参数标识'   
            });
            $('#Wcsmc').validatebox({    
                required: true,    
               missingMessage: '请填写参数名称'   
            });
            $('#auth_id').validatebox({    
                required: true,    
               missingMessage: '请填写用户名'   
            });
            $('#auth_pwd').validatebox({    
                required: true,    
               missingMessage: '请填写密码'   
            });
            $("#loginform").form("disableValidation");
            $("#writeform").form("disableValidation");


        $("#write").hide();

    $("#czlx").change(function(){
        $("#write").hide();
        var cslx = $("#czlx").val();
        $("#oidtr ~ tr").remove();
        if(cslx=="gjidcx"){ $("#check").append("<tr><td class=\"columnTitle_mustbe\">ID:</td><td class=\"tableContent\"><input type=\"text\" id=\"id\"/></td></tr>"); }
        if(cslx=="gjfwmccx"||cslx=="gjfwmccxNz"){ $("#check").append("<tr><td class=\"columnTitle_mustbe\">应用范围名称:</td><td class=\"tableContent\"><input type=\"text\" id=\"yyfwmc\"/></td><td class=\"columnTitle_mustbe\">所属项目:</td> <td class=\"tableContentAuto\"><select id=\"cslb\" ><option value=\"qxz\">请选择</option><option value=\"1\">档案管理</option><option value=\"2\">省经信委</option></select> </td></tr>"); }
        if(cslx=="cxhyzys"){ $("#check").append("<tr><td class=\"columnTitle_mustbe\">应用范围名称:</td><td class=\"tableContent\"><input type=\"text\" id=\"yyfwmc\"/></td><td class=\"columnTitle_mustbe\">所属项目:</td> <td class=\"tableContentAuto\"><select id=\"cslb\" ><option value=\"qxz\">请选择</option><option value=\"1\">档案管理</option><option value=\"2\">省经信委</option></select> </td></tr>"); }
        if(cslx=="gjcsbscx"||cslx=="gjcsbscxNz"){ $("#check").append("<tr><td class=\"columnTitle_mustbe\">参数标识:</td><td class=\"tableContent\"><input type=\"text\" id=\"csbs\"/></td><td class=\"columnTitle_mustbe\">所属项目:</td> <td class=\"tableContentAuto\"><select id=\"cslb\" ><option value=\"qxz\">请选择</option><option value=\"1\">档案管理</option><option value=\"2\">省经信委</option></select> </td></tr>"); }
        if(cslx=="gjxmcx"){ $("#check").append("</tr><tr><td class=\"columnTitle_mustbe\">所属项目:</td> <td class=\"tableContentAuto\"><select id=\"cslb\" ><option value=\"qxz\">请选择</option><option value=\"1\">档案管理</option><option value=\"2\">省经信委</option></select> </td></tr>"); }
        if(cslx=="gjxmqycx"){ $("#check").append("</tr><tr><td class=\"columnTitle_mustbe\">所属项目:</td> <td class=\"tableContentAuto\"><select id=\"cslb\" ><option value=\"qxz\">请选择</option><option value=\"1\">档案管理</option><option value=\"2\">省经信委</option></select> </td><td class=\"columnTitle_mustbe\">是否启用:</td> <td class=\"tableContentAuto\"><select id=\"sfqy\" ><option value=\"0\">是</option><option value=\"1\">否</option></select> </td></tr>"); }
        });
        });


    </script>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值