ajax调用webservice注意事项

1.weservice客户端需要注意(跨域请求)

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
        <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>
        <add name="Access-Control-Allow-Origin" value="*"/>
      </customHeaders>
    </httpProtocol>

  </system.webServer>

2.ajax请求

var soapdata='{"subject":"测试电话李明远","cicc_contactid": null,"cicc_direction":"10","ownerid":"A6B254F4-6A49-E611-80BE-005056BD7FD2","cicc_contacts_text":"白展堂","cicc_if_im": null,"scheduleend":"2017-10-10 09:00:00","schedulestart":"2017-10-10 08:00:00","cicc_requestdepartment": null,"cicc_talktime": null,"description": null,"cicc_phonenumber": null,"cicc_company": null,"cicc_source": null}';
var soap='<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"><soap12:Body> <InsertPhonecall xmlns="http://tempuri.org/"><obj>'+soapdata+'</obj></InsertPhonecall></soap12:Body></soap12:Envelope>';
 $.ajax({
                type: "POST",
                url: "http://loacalhost/PortalService/PortalService.asmx?InsertPhonecall ",
                data:soap,
                contentType: "application/soap+xml",
                charset:"utf-8",
                cache: false,
                dataType:"xml",
                async: false,
                success: function (data) { debugger; alert(data.firstChild.textContent); },
                error: function (data) { console.log(data);}
            });

分析一波soap格式,注意在soap1.2版本中<soap12:Body><方法名 xmlns="http://tempuri.org/"><参数名>参数</参数名></方法名></soap12:Body>

另外可以参考网页中涉及的传输方法

SOAP 1.1

以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。

POST /PortalService.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/Hi"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Hi xmlns="http://tempuri.org/">
      <hi>string</hi>
    </Hi>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <HiResponse xmlns="http://tempuri.org/">
      <HiResult>string</HiResult>
    </HiResponse>
  </soap:Body>
</soap:Envelope>

SOAP 1.2

以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。

POST /PortalService.asmx HTTP/1.1
Host: localhost
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <Hi xmlns="http://tempuri.org/">
      <hi>string</hi>
    </Hi>
  </soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <HiResponse xmlns="http://tempuri.org/">
      <HiResult>string</HiResult>
    </HiResponse>
  </soap12:Body>
</soap12:Envelope>

HTTP POST

以下是 HTTP POST 请求和响应示例。所显示的占位符需替换为实际值。

POST /PortalService.asmx/Hi HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: length

hi=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">string</string>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 AJAX 调用 WebService 有以下几个步骤: 1. 在 HTML 页面中引入 jQuery 库(如果项目中已经引入了 jQuery,则可以跳过此步骤)。 ```html <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> ``` 2. 在 JavaScript 中编写 AJAX 调用代码。下面是一个示例: ```javascript $(document).ready(function() { $("#btnSearch").click(function() { var keyword = $("#txtKeyword").val(); $.ajax({ type: "POST", url: "WebService.asmx/GetSearchResult", data: "{'keyword':'" + keyword + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(data) { $("#searchResult").html(data.d); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } }); }); }); ``` 解释一下上面代码中的各个参数: * `type`:请求方式,可以是 "GET" 或 "POST"。 * `url`:WebService 的地址,需要根据实际情况修改。 * `data`:请求参数,需要按照指定的格式传递,这里使用的是 JSON 格式。 * `contentType`:请求数据类型,需要设置为 "application/json; charset=utf-8"。 * `dataType`:响应数据类型,需要设置为 "json"。 * `success`:请求成功后的回调函数。 * `error`:请求失败后的回调函数。 3. 在 WebService 中编写对应的方法。例如,上面代码中调用的是 `GetSearchResult` 方法,那么在 WebService 中就需要定义这个方法,代码如下: ```csharp [WebMethod] public string GetSearchResult(string keyword) { // 根据关键字查询数据库,并返回查询结果 return "查询结果"; } ``` 注意,方法需要添加 `[WebMethod]` 标记,同时需要设置返回值类型和参数类型。 这样就完成了 AJAX 调用 WebService 的过程。需要注意的是,由于 AJAX 调用是异步的,因此需要在回调函数中更新页面的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值