原生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 相关文章推荐
Javascript 模式实例 观察者模式
Oct 24 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
Jun 03 Javascript
Javascript原型链和原型的一个误区
Oct 22 Javascript
纯javascript制作日历控件
Jul 17 Javascript
JavaScript弹出对话框的三种方式
Mar 23 Javascript
基于javascript实现全屏漂浮广告
Mar 31 Javascript
jquery对dom节点的操作【推荐】
Apr 15 Javascript
手机图片预览插件photoswipe.js使用总结
Aug 25 Javascript
JS实现的简单表单验证功能完整实例
Oct 14 Javascript
基于Bootstrap表单验证功能
Nov 17 Javascript
vue.js中ref及$refs的使用方法解析
Oct 08 Javascript
webpack介绍使用配置教程详解webpack介绍和使用
Jun 25 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 图片上传实现代码 带详细注释
2010/04/29 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
python tornado使用流生成图片的例子
2019/11/18 Python
python数据化运营的重要意义
2019/11/25 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
Python下载的11种姿势(小结)
2020/11/18 Python
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
大学生学业生涯规划
2014/01/05 职场文书
社区活动总结报告
2014/05/05 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
人事任命书怎么写
2014/06/05 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
golang 生成对应的数据表struct定义操作
2021/04/28 Golang
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技