js的jsonp
2024-08-30 23:24:30
window.ajaxJsonp=function(params) {
params = params || {};
params.data = params.data || {};
var json = params.jsonp ? jsonp(params) : json(params);
// jsonp请求
function jsonp(params) {
//创建script标签并加入到页面中
var callbackName = params.jsonp;
var head = document.getElementsByTagName('head')[0];
// 设置传递给后台的回调参数名
params.data['callback'] = callbackName;
var data = formatParams(params.data);
var script = document.createElement('script');
head.appendChild(script);
//创建jsonp回调函数
window[callbackName] = function(json) {
head.removeChild(script);
clearTimeout(script.timer);
window[callbackName] = null;
params.success && params.success(json);
};
//发送请求
script.src = params.url + '?' + data;
//为了得知此次请求是否成功,设置超时处理
if(params.time) {
script.timer = setTimeout(function() {
window[callbackName] = null;
head.removeChild(script);
params.error && params.error({
message: '超时'
});
}, time);
}
};
//格式化参数
function formatParams(data) {
var arr = [];
for(var name in data) {
arr.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name]));
};
// 添加一个随机数,防止缓存
arr.push('v=' + random());
return arr.join('&');
}
// 获取随机数
function random() {
return Math.floor(Math.random() * 10000 + 500);
}
}
最新文章
- iOS 打电话 发短信(转载)
- 从头安装及配置PL/SQL Developer
- POJ 2386 Lake Counting(深搜)
- C++_Eigen函数库用法笔记——Matrix and Vector Arithmetic
- UESTC 2016 Summer Training #1 Div.2
- python 的 class
- 【转】linux dumpe2fs命令
- Shell变量之自定义变量、环境变量
- jquery 单击li防止重复加载的实现代码
- Java创建对象的4种方式?
- 扫描soa并输出所有服务方法
- create pfile from spfile;
- win10 uwp 列表模板选择器
- nsqd.go
- python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)
- git与github工具使用
- pycharm2018.3版 永久激活
- java 中自定义类的概述
- 【转】C语言中字符串输入的三种方法
- RESTORE 无法处理数据库 'Students',因为它正由此会话使用。建议在执行此操作时使用 master 数据库。
热门文章
- magento getUrl函数跳转admin模块问题
- 牛客网-3 网易编程题(1拓扑&;2二叉树的公共最近祖先&;3快排找第K大数)
- EasyUI系列学习(十)-Tabs(选项卡)
- 3122 奶牛代理商 VIII
- cocos2dx在windows下搭建环境android报错
- 一个完整的网站记录(springmvc hibernate juery bootstrap)
- STA之Concepts (1)
- MySql学习笔记(三) —— 聚集函数的使用
- Windows提高_1.4进程通信
- 数据类型对应字节数(32位,64位 int 占字节数)