原生JS实现ajax与ajax的跨域请求实例


Posted in Javascript onDecember 01, 2017

一、原生JS实现ajax

第一步获得XMLHttpRequest对象

第二步:设置状态监听函数

第三步:open一个连接,true是异步请求

第四部:send一个请求,可以发送一个对象和字符串,不需要传递数据发送null

第五步:在监听函数中,判断readyState=4&&status=200表示请求成功

第六步:使用responseText、responseXML接受响应数据,并使用原生JS操作DOM进行显示

var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function(){
 console.log(ajax.readyState);
 console.log(ajax.status);
 if(ajax.readyState==4 && ajax.status==200){
  console.log(ajax.responseText);
  console.log(ajax.responseXML);//返回不是XML,显示null
  console.log(JSON.parse(ajax.responseText));
  console.log(eval("("+ajax.responseText+")"));
  }
}
ajax.open("GET","h51701.json",true);
ajax.send(null);

二、ajax的跨域请求

[跨域请求处理]由于在JS中存在同源策略。当请求不同协议名,不同端口号,不同主机名下面的文件时,将会违背同源策略,无法请求成功!需要进行跨域处理!

1、后台PHP进行设置:

前台无需任何设置,在后台被请求的PHP文件中,写入一条header。

header("Access-Control-Allow-Origin:*");//表示允许哪些域名请求这个PHP文件,*表示所有域名都允许

2、使用src属性+JSONP实现跨域

①拥有src属性的标签自带跨域功能!所以可以使用script标签的src属性请求后台数据

<scriptsrc="http://127.0.0.1/json.php"type="text/javascript"charset="utf-8"></script>

②由于src在加载数据成功后,后直接将加载内容放入到script标签中

所以,后台直接返回JSON字符串将不能在script标签中解析

因此,后台应该返回给前台一个回到函数名,并将JSON字符串作为参数传入

后台PHP文件中返回:

echo"callBack({$str})";

③前台接收到返回的回到函数,将直接在script标签中调用。因此需要声明这样一个回调函数,作为请求成功的回调。

function callBack(data){
  alert("请求成功");
  console.log(data);
 }

3、JQuery的ajax实现JSONP

① 在ajax请求时,设置dataType为"json"

② 后套返回时,依然需要返回回调函数。但是,ajax在发送请求时会默认使用get请求将回到函数名发给后台,后台可以使用$_GET['callback']取出回调函数名:

echo"{$_GET['callback']}({$str})";

③后台返回以后,ajax依然可以用success作为成功的回调函数:

success:function(data){}

当然后台也可以随便返回一个回调函数名。

echo"callBack({$str})";

前台只要请求成功,就会自动调用这个函数。类似于第2条的②③步

以上这篇原生JS实现ajax与ajax的跨域请求实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一个可以显示阴历的JS代码
Mar 05 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
Oct 17 Javascript
JS实现点击按钮自动增加一个单元格的方法
Mar 09 Javascript
javascript实现无法关闭的弹框
Nov 27 Javascript
angularJs提交文本框数据到后台的方法
Oct 08 Javascript
详解Vue项目中实现锚点定位
Apr 24 Javascript
vue实现按需加载组件及异步组件功能
May 27 Javascript
解析vue、angular深度作用选择器
Sep 11 Javascript
微信小程序中weui用法解析
Oct 21 Javascript
js实现登录时记住密码的方法分析
Apr 05 Javascript
解决ant Design Search无法输入内容的问题
Oct 29 Javascript
nuxt 路由、过渡特效、中间件的实现代码
Nov 06 Javascript
浅谈angular4实际项目搭建总结
Dec 01 #Javascript
JS实现的ajax和同源策略(实例讲解)
Dec 01 #Javascript
微信小程序表单验证功能完整实例
Dec 01 #Javascript
PHP自动加载autoload和命名空间的应用小结
Dec 01 #Javascript
利用jquery如何从json中读取数据追加到html中
Dec 01 #jQuery
javascript修改浏览器title方法 JS动态修改浏览器标题
Nov 30 #Javascript
vue组件发布到npm简单步骤
Nov 30 #Javascript
You might like
PHP多个文件上传到服务器实例
2014/10/29 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
JS高级调试技巧:捕获和分析 JavaScript Error详解
2014/03/16 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
react redux入门示例
2018/04/19 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
Vue实现日历小插件
2019/06/26 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
详解python字节码
2018/02/07 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
简单了解python单例模式的几种写法
2019/07/01 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
个人找工作自荐信格式
2013/09/21 职场文书
音乐专业应届生教师求职信
2013/11/04 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
运动会报道稿300字
2014/10/02 职场文书
横空出世观后感
2015/06/09 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书