原生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 相关文章推荐
Valerio 发布了 Mootools
Sep 23 Javascript
return false;和e.preventDefault();的区别
Jul 11 Javascript
30个最佳jQuery Lightbox效果插件分享
Apr 11 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
Feb 01 Javascript
javascript中的startWith和endWith的几种实现方法
May 07 Javascript
jquery中$(#form :input)与$(#form input)的区别
Aug 18 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
Jan 09 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
JavaScript计划任务后台运行的方法
Dec 18 Javascript
js实现旋转木马效果
Mar 17 Javascript
Bootstrap table使用方法汇总
Nov 17 Javascript
Angular17之Angular自定义指令详解
Jan 21 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
第八节 访问方式 [8]
2006/10/09 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
QQ登录简单实现代码
2021/03/09 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
jQuery在vs2008及js文件中的无智能提示的解决方法
2010/12/30 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
JavaScript prototype属性详解
2016/10/25 Javascript
巧用canvas
2017/01/21 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
2019/04/30 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
物业保安员岗位职责
2014/03/14 职场文书
合伙协议书
2014/04/23 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
新文化运动的口号
2014/06/21 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
三年级学生期末评语
2014/12/26 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书