封装ajax函数支持jsonp,ajax和jsonp复习
ajax://(原生js实现Ajax)实例1:
//Ajax封装函数
function Ajax(type, url, data, success, failed){
// 创建ajax对象
var xhr = null;
if(window.XMLHttpRequest){//非IE浏览器
xhr = new XMLHttpRequest();
} else if {//IE浏览器
xhr = new ActiveXObject('Microsoft.XMLHTTP')
}else{
alert("该浏览器不支持Ajax!");
}
// 用于清除缓存
var random = Math.random();
if(typeof data == 'object'){
var str = '';
for(var key in data){
str += key+'='+data[key]+'&';
}
data = str.replace(/&$/, '');
}
if(type.toUpperCase() == 'GET'){
if(data){
xhr.open('GET', url + '?' + data, true);
} else {
xhr.open('GET', url + '?t=' + random, true);
}
xhr.send();
} else if(type.toUpperCase() == 'POST'){
xhr.open('POST', url, true);
// 如果需要像 html 表单那样 POST 数据,请使用 setRequestHeader() 来添加 http 头。
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(data);
}
// 处理返回数据
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
/*
** Http状态码
** 1xx :信息展示
** 2xx :成功
** 3xx :重定向
** 4xx : 客户端错误
** 5xx :服务器端错误
*/
if(xhr.status == 200){
success(xhr.responseText);
} else {
if(failed){
failed(xhr.status);
}
}
}
}
}
// 测试调用
var sendData = {name:'asher',sex:'male'};
Ajax('get', 'data/data.html', sendData, function(data){
console.log(data);
}, function(error){
console.log(error);
});
jsonp:$(function(){
/*
//简写形式,效果相同
$.getJSON("http://app.example.com/base/json.do?sid=1494&busiId=101&jsonpCallback=?",
function(data){
$("#showcontent").text("Result:"+data.result)
});
*/
$.ajax({
type : "post",
async:false, // 使用同步操作
url : "http://10.64.22.11/service/promotion/intention/intentionResult?token=5f25d0b83d774abd941aa5309bf081f7&userid=4221",
dataType : "jsonp",//数据类型为jsonp
jsonp: "jsonpCallback",//服务端用于接收callback调用的function名的参数
success : function(data){
$("#showcontent").text("Result:"+data.result)
},
error:function(){
alert('fail');
}
});
});
封装ajax函数支持jsonp,ajax和jsonp复习相关推荐
- ajax函数返回值,ajax:怎么获得onreadystatechange调用的函数的返回值?
异步的ajax实际上使用了单独的进程,因此无法获取到这个返回值,而且,在调用ajax()方法时你根本无法知道它什么时候会执行完毕. 因此对于异步的ajax来说,你无法主动的获取其返回值,只能提供回调方 ...
- ajax不支持post,AJAX不能正确发送POST变量
你sendMessage功能是不完全正确 - 看看这看看它是否有帮助. 在最初检查的receiveReq状态不参照实例化XMLHttpRequest对象sendReq功能 - 也,请求绝不会因为ope ...
- jquery定义ajax函数吗,jQuery AJAX自定义函数和自定义回调?
小编典典 编辑: 最近对此表示赞同,我不得不说我不再这样做.$.ajax返回a,promise因此您可以直接使用promise以更一致和更可靠的方式执行我在这里所做的几乎所有工作. function ...
- 不同浏览器 ajax,完整的 AJAX 写法(支持多浏览器)
代码如下: var xmlhttp; function Submit() { //1.创建 XMLHttpRequest 对象 if (window.XMLHttpRequest) { //IE7,I ...
- ajax背景、ajax对象、ajax状态、ajax与http、ajax请求数据接口、同步与异步、ajax请求XML数据、封装ajax函数、artTemplate简介、同源策略和跨域请求、JSONP
AJAX简介: ajax背景: 1.AJAX(Asynchronous JavaScript And Xml)异步的 JavaScript 和 XML:ajax是浏览器提供的一套API,最早出现在谷歌 ...
- Ajax跨域提交JSON和JSONP
可以直接使用$.getJSON()方法实现跨域请求,参数中必须加上callback,如: var jsonpUrl = 'http://www.test.com/index.php?c=Api_Ord ...
- jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)
jQuery中使用ajax: 在jQuery中使用ajax首先需要引入jQuery包,其引入方式可以采用网络资源,也可以下载包到项目文件中,这里推荐下载包到文件中:市面上有多个版本的jQuery库,这 ...
- Django 【第十九篇】JS实现的ajax、同源策略和前端JSONP解决跨域问题
一.回顾jQuery实现的ajax 首先说一下ajax的优缺点 优点:AJAX使用Javascript技术向服务器发送异步请求: AJAX无须刷新整个页面: 因为服务器响应内容不再是整个页面,而是页面 ...
- Ajax之跨域访问与JSONP
前言 同源策略的限制,使得ajax无法发出跨域请求.在许多情况下,我们需要让ajax支持跨域.以下是其中一种解决方案(JSONP).JSONP解决了跨域数据访问的问题. 在html中,具有src属性的 ...
- ajax跨域请求Jsonp实现,使用jsonp实现ajax跨域请求
Jsonp(JSON with Padding)是资料格式 json 的一种"使用模式",可以让网页从别的网域获取资料. 由于同源策略,一般来说位于 server1.example ...
最新文章
- 我的Python分析成长之路8
- 抱歉,我觉得有些人做副业并不靠谱
- 记录android老项目studio升级3.1+后重新配置gradle踩过的坑
- xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题
- html文字字号不改变,如何在不改变div大小的情况下更改HTML / css中的字体大小?...
- wxWidgets:wxStdOutputStream类用法
- 在centos8 stream启用 Extra Packages
- Python 程序报错崩溃后,如何倒回到崩溃的位置?
- C语言hello work的编译过程分解
- SHELL编程传递参数方法详解$# $* $0 $1 $2 $...
- 自己整理实现的python小工具
- BZOJ2038:[2009国家集训队]小Z的袜子——题解
- sql中常见sqlcode原因分析
- 马云留给阿里的财富:4个应用场景落地+90个区块链专利
- Vue项目上传图片后在ie浏览器卡死
- 什么是业务模式、商业模式、经营模式、盈利模式和发展模式?
- 2013年5月上海乌镇游
- MapX学习基本教程
- 【CAD算法】【计算机图形学】Bezier贝塞尔曲线生成程序(python/numpy实现)[1]
- 使用DirectPlay进行网络互联(4)