原生js ajax与jquery ajax的区别
原生js ajax的调用:
ajax({
type : "get",
url : "02_ajax_get.txt",
data : {
"userName" : "lnj",
"userPwd" : "321"
},
timeout : time, //超时时间
success : function (xmlhttp) {
alert(xmlhttp.responseText);
},
error : function (xmlhttp) {
alert('请求失败!');
}
});
jquery ajax的调用:
$.ajax({
type : "get",
url : "02_ajax_get.txt",
data : "userName=lnj&userPwd=321",
timeout : time, //超时时间
success : function (xmlhttp) {
alert(xmlhttp.responseText);
},
error : function (xmlhttp){
alert('请求失败!');
}
});
myajax.js 文件:
function obj2str(data) {
/*
{
"userName" : "Inj",
"userPwd" : "123456"
"t" : "3221312313123"
}
*/
data.t = new Date().getTime();
var res = [];
//for in 专门用来遍历对象的
//key(就是对象的属性), data[key](就是属性对应的属性值)
for(var key in data) {
//在URl中是不可以出现中文的,如果出现中文需要转码
//可以调用encodeURIComponent()方法
//URL中只可以出现字母/数字/下划线/ASCII码(其他的都需要转码)(%25E5%2593%2588%25E5%2593%25)
res.push(encodeURIComponent(key) + "=" + encodeURIComponent(data[key])); //[userName=Inj,userPwd=123456]
}
return res.join("&"); //userName=Inj&userPwd=123456
}
// 传入的参数为对象可以使调用对象里面的属性不用按着顺序来
function ajax(option) {
//将对象转换为字符串
var str = obj2str(option.data); //key=value&key=value
//1.创建一个异步对象
//var xmlhttp = new XMLHttpRequest();
//兼容IE5,IE6
var xmlhttp, timer;
if(window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//2.设置请求方式和请求地址
/*
method:请求的类型;GET 或 POST
url:文件在服务器上的位置
async:true(异步)或 false(同步)
*/
if(option.type.toLowerCase() == "GET") {
xmlhttp.open(option.type, option.url + "?" + str, true); //提交请求url地址不能出现中文
//3.发送请求
xmlhttp.send();
} else {
xmlhttp.open(option.type, option.url, true);
//注意点:必须放在open和send之间
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(str);
}
//4.监听状态的变化
xmlhttp.onreadystatechange = function (ev2) {
/*
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
*/
if(xmlhttp.readyState == 4) {
clearInterval(timer);
//判断请求是否成功
if((xmlhttp.status >= 200 && xmlhttp.status < 300) || xmlhttp.status == 304) {//服务器返回的状态码
//5.处理返回的结果
option.success(xmlhttp);
} else {
option.error(xmlhttp);
}
}
}
//判断外界是否传入超时时间
if(option.timeout) {
timer = setInterval(function () {
console.log("中断请求");
xmlhttp.abort();//关闭请求
clearInterval(timer);
}, option.timeout);
}
}
本人正在学习和摸索中,如有错误,欢迎指正!
原生js ajax与jquery ajax的区别的更多相关文章
- 框架----Django之Ajax全套实例(原生AJAX,jQuery Ajax,“伪”AJAX,JSONP,CORS)
一.原生AJAX,jQuery Ajax,“伪”AJAX,JSONP 1. 浏览器访问 http://127.0.0.1:8000/index/ http://127.0.0.1:8000/fake_ ...
- 原生JS取代一些JQuery方法的简单实现
原生JS取代一些JQuery方法的简单实现 下面小编就为大家带来一篇原生JS取代一些JQuery方法的简单实现.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 1.选 ...
- DOM对象和js对象以及jQuery对象的区别
DOM对象和js对象以及jQuery对象的区别 DOM对象和js对象以及jQuery对象的区别 一.DOM对象 文档对象模型简称DOM,是W3C组织推荐的处理可扩展置标语言的标准编程接口. DOM实际 ...
- 原生Ajax--XmlHttpRequest对象和jQuery.ajax()
Ajax主要就是使用 [XmlHttpRequest]对象来完成请求的操作,该对象在主流浏览器中均存在(除早起的IE) 1.XmlHttpRequest对象介绍 XmlHttpRequest对象的主要 ...
- Java程序员之JS(一) 之 JQuery.ajax
背景:紧着现在项目的需要,先从JQuery.ajax出发,主要需求是通过 js 调用Java 代码,从而适应现在的项目. 先从几个概念开始讲解: 一. 什么是Deferred Deferred 对象 ...
- 原生JS版和jQuery 版实现文件上传功能
<!doctype html> <html lang="zh"> <head> <meta charset="utf-8&quo ...
- AJAX和jQuery Ajax总结
AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用,改善用户体验,实现无刷新效果的技术. 使用AJAX的优 ...
- 原生JS forEach()和map()遍历的区别以及兼容写法
一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...
- AJAX,jQuery Ajax和Deferred
AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用,改善用户体验,实现无刷新效果的技术. 使用AJAX的优 ...
随机推荐
- JVM探究之 —— 类文件结构(脑图)
- Error:A problem occurred configuring project ':networklibrary'. > No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
https://blog.csdn.net/dafeige8/article/details/87880998 https://blog.csdn.net/vocanicy/article/detai ...
- Chrome禁用software_reporter_tool
今天开机后,从几分钟到半个小时之间,感觉机器反应有些慢,发现CPU占用80-90%.查看任务管理器, 有一个 software_reporter_tool.exe 的程序占用了一半的CPU使用率. 转 ...
- linux查看实时日志命令
tail -f localhost_access_log.2018-12-11.txt(当前时间)今天的实时日志,操作一下系统,就会报出相应的日志
- 封装redis操作 php版本
<?php namespace App\Service; use App\Service\BaseService; use Illuminate\Support\Facades\Redis; / ...
- centos7 spark2.3.1集群搭建
1.安装jdk 2.安装scala 参照jdk的安装 3.ssh 免密码登录 4.安装hadoop 以上四步请参照 centos7 安装hadoop2.7.6(分布式) 5.安装spark 1) ...
- 使用Python的turtle画小绵羊
今天学习使用turtle画图,本来想实现个3D效果,结果2D都画了半天,画圆被绕晕了 目标图片: 实现代码: # -*- coding:utf-8 -*- # __author__ :kusy # _ ...
- Docker下打包FastDFS镜像以及上传遇到的问题
官方地址:https://github.com/happyfish100/fastdfs 一.先下载个包,然后解压(自己找个目录下载即可) [root@localhost soft]# wget ht ...
- fineui 模拟右下角弹窗
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...
- Three.js场景的基本组件
1.场景Scene THREE.Scene被称为场景图,可以用来保存所有图形场景的必要信息.每个添加到Scene的对象,包括Scene自身都继承自名为THREE.Object3D对象.Scene不仅仅 ...