现在的位置: 首页 > web前端 > 正文

Jquery AJAX 跨域调用webservices

2017年05月19日 web前端 ⁄ 共 1428字 ⁄ 字号 评论关闭

1. web.config里需要配置2个地方

<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpHandlers>
在<system.web></system.web>之间加入
<webServices>
<protocols>
<add name="HttpPost" />
<add name="HttpGet" />
</protocols>
</webServices>

2. 使用Jsonp进行跨域调用

<script src="jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
            $(document).ready(function() {
                $.ajax({
                    type: "get",
                    url: "http://localhost:2579/Services/ShopCart.asmx/Test1",
                    async: false,
                    contentType: "application/json",
                    dataType: "jsonp",
                    data: "DiMain=test",
                    //data: "{DiMain:'test'}",
                    success: mySuccess,
                    error: myError
                });
            });

            function mySuccess(res) {
                alert(res.result);
            }

            function myError(a, b, c) {
                alert(b);
            }
</script>

3. asmx文件

[WebMethod]
public void Test1(string DiMain)
  {
            //return CmnProc.getString(HttpContext.Current.Request["callback"]) + "({d:\"" + DiMain + "\"})";
            HttpContext.Current.Response.Write(CmnProc.getString(HttpContext.Current.Request["callback"]) + "({result:\"" + DiMain + "\"})");
}

貌似使用jsonp跨域时请求必须是get方式,

【上篇】
【下篇】

抱歉!评论已关闭.