首页 > 其他分享 >Html中使用jquery通过Ajax请求WebService接口以及跨域问题解决

Html中使用jquery通过Ajax请求WebService接口以及跨域问题解决

时间:2023-05-18 17:47:07浏览次数:61  
标签:jquery xml WebService json Ajax Html result string 跨域

场景

VS2019新建WebService/Web服务/asmx并通过IIS实现发布和调用:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130743584

在上面实现发布WebService的基础上,怎样在html中通过jquery对接口发起

请求和解析数据。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

1、WebSerivce返回json字符串。

这里直接使用转义后的json模拟数据

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string GetLocStatusInfo(string CardNum,string CardType)
        {
            return "{\"Code\":\"1\",\"Message\":\"\",\"result\":[{\"cardnum\":\"5904\",\"devNum\":\"31794\",\"isinwell\":\"1\"}]}";
        }
    }

2、新建html,并引入Jquery

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
     <script src="jquery-3.5.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
         window.setInterval(() => {
            //响应正常
            $.ajax({
              type: "get", 
              //这样会提示 缺少参数: CardNum。
              //url: `http://ip:8899/KjtxLocService.asmx/GetLocStatusInfo`,
              url: `http://ip:8899/KjtxLocService.asmx/GetLocStatusInfo?CardNum=&CardType=3`,
              dataType: "xml",
              contentType: "application/xml",
              success: (result) => {
                let data = JSON.parse(result.getElementsByTagName('string')[0].innerHTML);
                console.log(data);
              },
              error: function(e) {
                console.log(e);
              },
            });
          }, 6000)    
    </script>
</head>
<body>

</body>
</html>

这里使用定时器对接口发起定时调用。

这里的contentType: "application/xml",是根据接口中的提示确定的

 

请求到数据后进行处理

let data = JSON.parse(result.getElementsByTagName('string')[0].innerHTML)

 

这是因为接口返回的是xml中包含着json字符串。

3、此时直接在浏览器中打开该html,查看控制台会提示跨域

需要修改webservice中的Web.config文件,在configuration中配置允许跨域请求

  <system.webServer>
    <!--配置为列出此目录的内容-->
    <directoryBrowse enabled="true"/>
    <!--配置允许跨域请求-->
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="*"/>
        <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
      </customHeaders>
    </httpProtocol>
  </system.webServer>

如果需要在其他机器上远程访问,还需要在configuration开启如下配置

  <system.web>
    <!--配置允许远程调用webservices-->
    <webServices>
      <protocols>
        <add name="HttpSoap"/>
        <add name="HttpPost"/>
        <add name="HttpGet"/>
        <add name="Documentation"/>
      </protocols>
    </webServices>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>

修改位置

 

4、此时则不会再出现跨域提示,也能正常获取json数据了


 

 

标签:jquery,xml,WebService,json,Ajax,Html,result,string,跨域
From: https://www.cnblogs.com/badaoliumangqizhi/p/17412615.html

相关文章

  • IDEA/WEBSTORM配置静态的html,提供给同一局域网访问
    配置端口和勾选不信任的链接 配置Deployment 最重要的一步:重启IDE访问配置的链接即可,可以把localhost改成本机的ip,供同一局域网的人使用了。 ......
  • JavaScript全解析——Ajax是什么(上)
    AJAX是AsynchronousJavaScriptAndXML的缩写。它不是一种编程语言。它是一种基于HTML、CSS、JavaScript和XML,让开发更好、更快和更有互动的Web应用的技术。什么是ajax认识前后端交互前后端交互就是前端与后端的一种通讯方式,主要使用的技术栈就是ajax(asyncjavascript......
  • PHP+MySql+jQuery实现的“顶”和“踩”投票功能
    当我们浏览网页时,我们想对网页内容如文章、评论中的观点持赞同或反对意见时,可以通过点击网页中的“顶”和“踩”来进行投票。而整个交互过程,开发者可以通过ajax异步来实现,从而提高用户体验。 本文结合实例,讲解使用PHP+MySql+jQuery实现的“顶”和“踩”投票功能,通过记录用户IP,判断......
  • HTML5 Canvas和EaselJS入门(译)
    HTML5中最受开发者期待的一项新特性莫过于Canvas(画布)元素了。Canvas元素提供了一个可以动态渲染图形和位图的位图画布。它非常类似于Flash中的Bitmap和BitmapData两个类。 但是,要使用Canvas还是有点难度的,特别是如果你还想管理,重绘或者运动图形或图片。与Flash播放器不同的是Canva......
  • 使用 HTML5 canvas 进行 Web 绘图
    新的HTML5规范旨在帮助开发人员更轻松的编写出各类Web应用,以顺应当前SaaS,云计算以及RIA等技术的最新趋势。在HTML5得以广泛推广之前,开发人员通常使用SVG,VML等技术进行Web绘图操作,但这些基于XML的绘图语言声明式的绘图方式并不能满足复杂绘图操作在性能上的需求,比如......
  • 使用 HTML5 canvas 绘制精美的图形
    HTML5是一个新兴标准,它正在以越来越快的速度替代久经考验的HTML4。HTML5是一个W3C“工作草案”—意味着它仍然处于开发阶段—它包含丰富的元素和属性,它们都支持现行的HTML4.01版本规范。它还引入了几个新元素和属性,它们适用许多使用web页面的领域—音频、视频、图......
  • 支持复制粘贴word图片的百度HTML编辑器
    ​图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码://判断剪贴......
  • html css 实现图片扫描特效
     实现这个特效需要做3个层,所以要用到CSS绝对定位和层级z-index以及设置top、left、bottom、right的值。大体结构是一个容器,容器里放3个层,底层是4个角的边框效果容器,中间层是要扫描的图片容器,顶层是扫描线容器,这3个层通过z-index来实现层级,它们的高宽度都取父容器的高宽度inherit......
  • JAVA实现html代码转为图片
    方法一:html2Image1、引入依赖<dependency><groupId>gui.ava</groupId><artifactId>html2image</artifactId><version>2.0.1</version></dependency>2、代码实现@ComponentpublicclassHtmlUtil{/***......
  • ios15使用html2canvas页面白屏、崩溃、自动刷新
    原文链接:https://www.cnblogs.com/yalong/p/17408067.html背景有个H5内嵌App的项目,做分享功能的时候用到了html2canvas,在IOS15(Iphone11pro)上,只要点击分享就会触发页面reload或者直接白屏,把H5链接在手机上用浏览器访问点击分享也不行,会触发浏览器自动刷新,看来就是这个htm......