原生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通过Ajax方式来提交Form表单的具体实现
Nov 07 Javascript
JS增加行复制行删除行的实现代码
Nov 09 Javascript
JS实现FLASH幻灯片图片切换效果的方法
Mar 04 Javascript
利用jQuery解析获取JSON数据
Apr 08 jQuery
js通过Date对象实现倒计时动画效果
Oct 27 Javascript
js原生日历的实例(推荐)
Oct 31 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
Dec 06 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
简单说说angular.json文件的使用
Oct 29 Javascript
原生JS实现逼真的图片3D旋转效果详解
Feb 16 Javascript
微信小程序 wxParse插件显示视频问题
Sep 27 Javascript
javascript使用Blob对象实现的下载文件操作示例
Apr 18 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
第七节--类的静态成员
2006/11/16 PHP
PHP 读取文件内容代码(txt,js等)
2009/12/06 PHP
学习php笔记 字符串处理
2010/10/19 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
javascript 实现map集合
2015/04/03 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
node上的redis调用优化示例详解
2018/10/30 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
js实现简单音乐播放器
2020/06/30 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
python list使用示例 list中找连续的数字
2014/01/27 Python
Python自定义简单图轴简单实例
2018/01/08 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
UNIX文件系统分类
2014/11/11 面试题
酒店副总经理岗位职责范本
2014/02/04 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
科学发展观演讲稿
2014/09/11 职场文书
初中学习计划书范文
2014/09/15 职场文书
大学生党员自我评价
2015/03/04 职场文书
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python
python神经网络ResNet50模型
2022/05/06 Python
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers