原生js,jquery ajax请求以及jsonp的调用
ajax
是用来处理前后端交互的技术,可以改善用户体验,其本质是
XMLHttpRequest,异步访问服务器并发送请求数据,服务器返回响应的数据,以页面无刷新的效果改变页面中的局部内容
同步:任务一个一个的执行,只有前面的任务执行完才会执行下一个任务,如果前面的任务是耗时操作,则需要一直等待
异步:多条任务并发执行,也就是一个任务的开启,不需要等待其他任务执行结束,效率较高
ajax的语言载体是JavaScript,最大的特点是页面不刷新
1、获取ajax对象
主流浏览器获取方式:火狐、谷歌、safari、opera、IE7以上
var xhr = new XMLHttpRequest();
IE7以下
var xhr = new ActiveXObject("microsoft.XMLHttp");
2、发起请求
创建请求:xhr.open(请求方式get/post,请求地址);
发送请求:xhr.send(post请求数据/get设置null);
3、接收数据
ajax可以接收字符串、html标签、css样式、xml、json
通过监听onreadystatechange事件。来接收ajax状态的变化(readyState属性)
readyState:
-0:表示未初始化,对象已经建立,但是没调用onen方法
-1:对象已建立,但是未调用send方法
-2:发送数据,已调用send方法,但当前状态及http头未知
-3:已接收部分数据,但是数据不全
-4:数据接收完毕
4、常用属性和方法
属性:
-responseText:将响应的数据作为字符串返回,只读
-responseXML:将响应的数据格式化为xml格式并返回,只读
-status:当前请求的http状态码
方法:
-open
-send
-setRequestHeader:设置请求头
get请求
url以字符串形式传递数据,对中文、&、=需要特殊处理,可以使用encodeURIComponent()方法进行编码,编码后的内容在服务端不需要解码,可以正常接收,get多个参数之间用&连接,参数名和参数值用=连接

var xhr = null;
//获取ajax对象
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else{
xhr = new ActiveXObject("Microsoft.XMLHttp");
}
xhr.onreadystatechange = function(){
console.log(xhr.readyState);
switch (xhr.readyState){
case 0:
console.log("尚未初始化");
break;
case 1:
console.log("尚未建立连接");
break;
case 2:
console.log("正在发送数据");
break;
case 3:
console.log("正在接受数据");
break;
case 4:
console.log("数据接收完成");
//处理接到的数据,这下面是重点
var text = xhr.responseText;
break;
}
}
//创建请求
xhr.open('get','http://localhost/PHP/ajax01.php?sel=4');
xhr.send(null);

post请求
-给服务器传参数,需要将参数写在send方法中:参数1=值1&参数2=值2...
-需要调用setRequestHeader()方法,把传送的参数封装成xml格式(模仿form表单提交数据:application/x-www-form-urlencoded);
-传递的中文、特殊符号都需要编码

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (xhr.readyState == 4) {
console.log("登陆成功:"+xhr.responseText);
}
}
//等到输入的用户名和密码,
var uname = "uname="+ encodeURIComponent(document.getElementById("uname").value);
var pwd = "pwd="+encodeURIComponent(document.getElementById("pwd").value);
xhr.open("post","http://localhos/PHP/ajax01.php");
//设置头信息,需要在open方法之后设置
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//设置参数
var str = uname+"&"+pwd;
xhr.send(str);

get/post的区别:
-请求数据量,get最多2k,post没有限制
-安全方面,post更安全
-传递数据的形式:get是url和参数一起发送,post是参数单独发送
jquery ajax请求

//AJAX
$.ajax({
url:"data.txt",
type:'get',
dataType:'json',
data:null,
async:true,
timeout:1000,//设定超时时间 一般都是3000毫秒
cache:false,//设定GET请求的时候不走 缓存数据,原理其实就是在URL末尾加随机数,默认是true
success:function(data){
console.log(data)
},
})
//JSONP
//JSONP都是GET和异步请求的,不存在其他的请求方式和同步请求,而且jquery默认会给JSONP的请求清楚缓存
$.ajax({
url:"http://matchweb.sports.qq.com/kbs/calendar?columnId=100000",
type:'get',
dataType:'jsonp',
jsonpCallback:"fn",//自定义传递给服务器的函数名,而不是使用jquery自动生成的
jsonp:'cb',//把传递函数名的那个形参callBack变为cb
success:function(data){
console.log(data)
},
})
原生js,jquery ajax请求以及jsonp的调用的更多相关文章
- 原生JS发送Ajax请求、JSONP
一.JS原生Ajax Ajax=异步Javascript+XML: ajax是一种数据请求的方式,不需要刷新整个页面.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. ajax的核心 ...
- 原生js发送ajax请求
堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...
- 原生js实现Ajax请求
总的来说,Ajax是与服务器交换数据并更新部分网页的艺术,在不重新加载整个网页的情况下,异步请求数据并刷新页面.举一个小的例子:Goole搜索页面.当用户在输入框输入关键字的时候,JavaScript ...
- 原生js写ajax请求(复习)
今天本地想测试一个接口,不想用框架想用js快速完成,突然发现,我居然忘了这个最基本的代码.好吧,只能复习一波. 在框架泛滥的今天,用惯$.ajax(),axios,superAgent等框架的你们,还 ...
- 原生js实现Ajax请求,包含get和post
现在web从服务器请求数据,很多用到Ajax,不过都是用的JQuery封装好的,之前做项目,由于无法引用JQuery,所以就只能用原生了,话不多说,请看代码. /*------------------ ...
- 原生js的ajax请求
传统方法的缺点: 传统的web交互是用户触发一个http请求服务器,然后服务器收到之后,在做出响应到用户,并且返回一个新的页面,,每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次 ...
- 原生js版ajax请求
function getXMLHttpRequest() { var xhr; if(window.ActiveXObject) { xhr= new ActiveXObject("Micr ...
- 原生js实现ajax封装
一.什么是ajax? 定义:Ajax(Asynchronous Java and XML的缩写)是一种异步请求数据的web开发技术,在不需要重新刷新页面的情况下,Ajax 通过异步请求加载后台数据,并 ...
- 原生JS实现Ajax及Ajax的跨域请求
前 言 如今,从事前端方面的程序猿们,如果,不懂一些前后台的数据交互方面的知识的话,估计都不太好意思说自己是程序猿.当然,如今有着许多的框架,都有相对应的前后台数据交互的方法. ...
随机推荐
- TortoiseGit使用笔记
不喜欢敲命令行,或者用惯TortoiseSVN的也可以使用TortoiseGit 1. TortoiseGit安装 安装很简单,默认安装就可以.需要安装以下几个软件: l Git-2.14.3-64- ...
- 关于preg_match() / preg_replace()函数的一点小说明
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $ ...
- Ajax地域选择demo
index.jsp只用于转发到Servlet获得省份数据再转发到province.jsp index.jsp <%@ page language="java" content ...
- 实例讲解Silverlight 初始控件如何获得焦点
这个问题本来是在我实际的项目中遇到过的,但这其实是当初项目要求,要求一进入就要使得在用户名那个文字框中聚焦,而不是再用鼠标去点击获得焦点,后来自己费了点时间解决了.本来我没太注意就过去了,没想到在QQ ...
- Python 安装requests和MySQLdb
Python 安装requests和MySQLdb 2017年10月02日 0.系统版本 0.1 查看系统版本 [root@localhost ~]# uname -a Linux localhost ...
- 图片轮滚形式A
思想解读: 一共有5幅图片,初始时只显示一幅,其余四幅隐藏.然后使用trigger设置右下角的点击事件,根据点击的索引显示某幅图片.原理不算复杂. 结论: trigger的使用,模拟点击 层淡入淡出函 ...
- 知识点:定义input type=file 样式的方法(转)
——“当我们想要用css美化表单的时候,有两个控件就会和前段人员作对,一个是是大名鼎鼎的select,另一个就是我现在要说说的 input type=file” 为什么要美化file控件?试想一下,别 ...
- Mapnik
Downloads Latest Release The latest release is Mapnik v3.0.22.最新版本是Mapnik v3.0.22. Mapnik 3.0.22 Rel ...
- Spring AOP 中pointcut expression表达式
原文地址——http://blog.csdn.net/qq525099302/article/details/53996344 Pointcut是指那些方法需要被执行”AOP”,是由”Pointcut ...
- 5.form表单验证
自定义验证: 其他验证: