原生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修改css样式style
Apr 15 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
May 10 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
Apr 02 Javascript
面向对象Javascript核心支持代码分享
May 23 Javascript
封装好的一个万能检测表单的方法
Jan 21 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
Jul 11 Javascript
JavaScript闭包的简单应用
Sep 01 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
Sep 12 Javascript
vue+SSM实现验证码功能
Dec 07 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
Jun 18 Javascript
JavaScript Window窗口对象属性和使用方法
Jan 19 Javascript
js实现详情页放大镜效果
Oct 28 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
一个用mysql_odbc和php写的serach数据库程序
2006/10/09 PHP
详解:――如何将图片储存在数据库里
2006/12/05 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
python使用多进程的实例详解
2018/09/19 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
财务部岗位职责
2013/11/19 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
护士实习求职信
2014/06/22 职场文书
公司奖励通知
2015/04/21 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL
MySQL事务的隔离级别详情
2022/07/15 MySQL