Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 592|回复: 0

Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-6-22 02:53:46 | 显示全部楼层 |阅读模式
     
     
    webservice 代码
     1     /// <summary>
     2     /// MESService 的摘要说明
     3     /// </summary>
     4     [WebService(Namespace = "http://tempuri.org/")]
     5     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
     6     //[System.ComponentModel.ToolboxItem(false)]
     7     // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
     8     [System.Web.Script.Services.ScriptService]
     9     public class MESService : System.Web.Services.WebService
    10     {
    11 
    12         [WebMethod(Description = "")]
    13         public string GetDataReturnStr(string strXML)
    14         {
    15             //你的结果处理
    16             #region 处理数据
    17 
    18             #endregion
    19             return Common.JsonHelper.SerializeToJson(new Student() { id = "1", name = "测试" });
    20         }
    21 
    22        
    23     }
    24     [Serializable]
    25     public class Student
    26     {
    27         public string id { get; set; }
    28         public string name { get; set; }
    29     }
     
    
    webservice 文件中需要添加的信息
     // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
     [System.Web.Script.Services.ScriptService]

    WebConfig 文件中需要添加节点
    1、解决跨域访问的问题
    <system.webServer>
        <!--解决跨域请求 -->
        <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、解决本地调用成功,外网调用失败的问题。
    <system.web>
        <webServices>
          <protocols>
            <add name="HttpSoap"/>
            <add name="HttpPost"/>
            <add name="HttpGet"/>
            <add name="Documentation"/>
          </protocols>
        </webServices>
    </system.web>

     

     Ajax 代码

     1 $.ajax({
     2                 async: true,
     3                 type: "post",
     4                 url: "http://localhost:41453/IDataServer/MESService.asmx/GetDataReturnStr",
     5                 data: "{strXML:'123123123'}",
     6                 dataType: "json",
     7                 contentType: "application/json; charset=utf-8",
     8                 success: function (json) {
     9                     var dataObj = eval("(" + json.d + ")");
    10                     alert(dataObj.id + '\r\n' + dataObj.name);
    11                 },
    12                 error: function () {
    13 
    14                 },
    15                 complete: function () {
    16                 }
    17             });

    这样就可以实现 ajax 访问webservice接口了




    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-27 08:37 , Processed in 0.066209 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表