原生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 相关文章推荐
Jquery优化效率 提升性能解决方案
Sep 06 Javascript
初识SmartJS - AOP三剑客
Jun 08 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
Oct 20 Javascript
Bootstrap每天必学之标签页(Tab)插件
Aug 09 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
May 13 Javascript
jQuery获取元素父节点的方法
Jun 21 Javascript
微信小程序 数据交互与渲染实例详解
Jan 21 Javascript
javascript 正则表达式去空行方法
Jan 24 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
Jun 29 Javascript
JS检测是否可以访问公网服务器功能代码
Jun 19 Javascript
webpack构建换肤功能的思路详解
Nov 27 Javascript
详解JavaScript中的数组合并方法和对象合并方法
May 11 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创建动态图像
2006/10/09 PHP
Php Cookie的一个使用注意点
2008/11/08 PHP
通俗易懂的php防注入代码
2010/04/07 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
如何使用php输出时间格式
2013/08/31 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
FF IE兼容性的修改小结
2009/09/02 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
python 标准差计算的实现(std)
2019/07/29 Python
详解Python中namedtuple的使用
2020/04/27 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
咖啡厅创业计划书范本
2014/01/22 职场文书
大学社团计划书
2014/05/01 职场文书
软件工程毕业生自荐信
2014/07/04 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
企业挂职心得体会
2014/09/10 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
营销计划书
2015/01/17 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang