美文网首页前端
前端ajax实现和跨域实现

前端ajax实现和跨域实现

作者: 煮黑豆 | 来源:发表于2019-11-27 12:59 被阅读0次

下面是用chrome实现ajax请求,并对ajax中get和post请求进行封装,最后对跨域请求的前端处理
本文用的idea工具
首先新建一个html页面,和一个数据文件
html和js代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<!--https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2019-11-27&leftTicketDTO.from_station=SHH&leftTicketDTO.to_station=BJP&purpose_codes=ADULT-->
<body>
<script>
 var xml=new XMLHttpRequest();
 xml.open("get","./data.txt");
 xml.send();
 xml.onreadystatechange=function (ev) {
     if(xml.readyState==4 && xml.status==200){
       console.log( xml.response) ;
     }
 }
</script>
</body>
</html>

data.txt文件

[{
"name":"chen",
"age":"12"
},{
"name":"zhou",
"age":"18"
},{
"name":"wang",
"age":"21"
}]

文件目录结构

image.png

启动浏览器:即可在控制台看到


image.png

说明实现成功。
在script把get改为post


image.png
同样返回结果。
那下面对get和post请求封装一个方法
 function ajax(url,data,method,cb) {
     var xml=new XMLHttpRequest();
     if(method=="get"){
         if(data){
             url+="?";
             url+=data;
         }
         xml.open(method,url);
         xml.send();
     }else {
         xml.open(method,url);
         if(data){
             xml.send(data)
         }else {
             xml.send();
         }
     }
     xml.onreadystatechange=function (ev) {
         if(xml.readyState==4 && xml.status==200){
             console.log( xml.response) ;
         }
     }
 }

以上最终实现了ajax的封装,不过没有兼容IE浏览器,对于IE用ActiveXObject即可
在script标签中直接调用

ajax("./data.txt",null,"get",function (data) {
     console.log("==========");
     console.log(data);
 })

但是对于下面跨域请求

// https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2019-11-27&leftTicketDTO.from_station=SHH&leftTicketDTO.to_station=BJP&purpose_codes=ADULT

ajax("./https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2019-11-27&leftTicketDTO.from_station=SHH&leftTicketDTO.to_station=BJP&purpose_codes=ADULT",null,"get",function (data) {
     console.log("==========");
     console.log(data);
 })

会报

image.png 跨域请求错误。
请求必须保证协议、域名和端口号一致才可以,否则会报跨域
那如何解决这个问题呢?
用src属性可以解决。都有谁有src属性呢?
img标签,script标签和iframe 标签

相关文章

  • 前端ajax实现和跨域实现

    下面是用chrome实现ajax请求,并对ajax中get和post请求进行封装,最后对跨域请求的前端处理本文用的...

  • AngularJS实现跨域请求

    跨域,前端开发中常常遇到的问题。AngularJS实现跨域方式类似于Ajax。使用CORS机制。 以下阐述一下An...

  • (一)实践JavaScript之index页面加载

    实现一个微博功能: 前端用 ajax 发送 HTTP 请求到后端 后端 API操作元素 ajax 跨域在当前,js...

  • vue-cli proxyTable配置

    前端的跨域转发 后端不需要配置,前端就可以实现跨域 proxyTable 的通常配置 这样就可以实现基本的跨域转发...

  • 浏览器同源策略与ajax跨域方法汇总

    本文先简要介绍前端开发中的浏览器同源政策;然后在跨域问题中,具体介绍跨域ajax请求的应用场景与实现方案。 什么是...

  • AJAX

    题目 手写一个ajax 跨域的常用实现方式 知识点 XMLHttpRequest 状态码 跨域:同源策略,跨域解决...

  • 前端跨域

    前端做网络轻取i存在跨域问题,准确的说是Ajax实现的数据交互,因为表单不存在跨域问题的哈。现目前主要的解决方法主...

  • 4种方法解决js跨域的实现方式

    一、JSONP 使用ajax实现跨域: 二、CORS跨域资源共享 三、Nginx反向代理 四、webpack (在...

  • 跨域之二:JSONP 和 CORS

    本节内容:实现跨域常用的两种方式 —— JSONP 和 CORS 零:跨域报错展示 在非同源情况下,调用 Ajax...

  • Ajax实现跨域

    同源策略 所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当浏览器的百...

网友评论

    本文标题:前端ajax实现和跨域实现

    本文链接:https://www.haomeiwen.com/subject/avkpwctx.html