原生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的几种方法
Oct 23 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
Feb 16 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
Jan 10 Javascript
使用js实现数据格式化
Dec 03 Javascript
JavaScript中的函数模式详解
Feb 11 Javascript
Angular 应用技巧总结
Sep 14 Javascript
javascript数组去重常用方法实例分析
Apr 11 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
Nov 15 Javascript
JS实现的抛物线运动效果示例
Jan 30 Javascript
详解jQuery-each()方法
Mar 13 jQuery
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
Aug 01 Javascript
微信小程序 wxParse插件显示视频问题
Sep 27 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
全国中波电台频率表
2020/03/11 无线电
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
PHP可变变量学习小结
2015/11/29 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
google地图的路线实现代码
2009/08/20 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python处理圆角图片、圆形图片的例子
2014/04/25 Python
用python实现面向对像的ASP程序实例
2014/11/10 Python
深入学习Python中的装饰器使用
2016/06/20 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
python字符串判断密码强弱
2020/03/18 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
大学本科生的个人自我评价
2013/12/09 职场文书
市场营销专业个人求职信范文
2013/12/14 职场文书
人事行政主管岗位职责
2013/12/22 职场文书
中层干部竞争上岗演讲稿
2014/01/13 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
六年级数学教学反思
2016/02/16 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL