1.代码:

 function ajax(options){
options = options || {};
options.type = options.type || "get";
data = options.data || {};
// 处理数据
var str = "";
for(var i in data){
//str += `${i}=${data[i]}&`; //IE不兼容模板字符串 ----update by 12-02
           str = str + i + "=" + data[i] + "&"; }
// 判断type类型拼接url
if(options.type == "get" || options.type == "jsonp"){
var d = new Date();
//url = `${options.url}?${str}d=${d.getTime()}`; //IE不兼容模板字符串 ----update by 12-02
           url = options.url + "?" + str + "_jwy" + "=" + d.getTime();             }else{
url = options.url;
}
// console.log(`拼接后的url是${url}`);
// 判断type类型走jsonp还是创建ajax
if(options.type == "jsonp" ){
var script = document.createElement("script");
script.src = url;
document.body.appendChild(script);
// console.log(`走了jsonp的方法,url是${url}`)
window[data[data.colmName]] = function(responseText){
options.success(responseText);
}
}else{
var xhr;
//兼容性
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else if(window.ActiveObject){
xhr = new ActiveXobject('Microsoft.XMLHTTP');
}
// 发送请求
if(options.type == "get"){
// console.log(`走了get的方法,url是${url}`)
xhr.open("get",url,true);
xhr.send(null)
}else{
// console.log(`走了post的方法,url是${options.url},参数是${str}`)
xhr.open("post",url,true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(str.slice(0,str.length-1));
}
// 接收数据
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
var status = xhr.status;
if(xhr.readyState == 4 && xhr.status == 200){
options.success(xhr.responseText,xhr.status);
}else{
options.error(xhr.responseText,xhr.status)
}
}
}
}
}

2.本地data.php中的数据:

<?php
$u = $_REQUEST["user"];
$p = $_REQUEST["pass"];
echo "这是php数据".$u ."-----".$p;

3.使用示例:

  POST请求:

 ajax({
url:"data.php",
data:{
user:"admin",
pass:23213
},
type:"post",
success:function(res,status){
console.log(res);
console.log(status);
},
error:function(res,status){
console.log(res);
console.log(status);
}
})

  GET请求:

 //type不传默认是get
ajax({
url:"data.php",
data:{
user:"admin",
pass:23213
},
success:function(res,status){
console.log(res);
console.log(status);
},
error:function(res,status){
console.log(res);
console.log(status);
}
})

  JSONP:

 //以百度搜索接口为例
ajax({
url:"https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su",
data:{
wd:"上海",
colmName:"cb",
cb:"adsaa"
},
success:function(res,status){
console.log(res);
console.log(status);
},
error:function(res,status){
console.log(res);
console.log(status);
}
})

  

JS AJAX和JSONP的基础功能封装以及使用示例;的更多相关文章

  1. 从 AJAX 到 JSONP的基础学习

    目录索引: 一.AJAX的概念二.POST && GET三.原生实现AJAX简单示例 3.1 实现代码 3.2 重点说明四.框架隐藏域 4.1 基本概念 4.2 后台写入脚本 4.3 ...

  2. 原生javascript封装ajax和jsonp

    在我们请求数据时,完成页面跨域,利用原生JS封装的ajax和jsonp: <!DOCTYPE html> <html lang="en"> <head ...

  3. 用原生JS实现AJAX和JSONP

    前端开发在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的.其实,原生 ...

  4. ajax和jsonp的封装

    一直在用jQuery的ajax,跨域也是一直用的jQuery的jsonp,jQuery确实很方便,$.ajax({...})就可以搞定. 为了更好的理解ajax和jsonp,又重新看了下书,看了一些博 ...

  5. vue.js的ajax和jsonp请求

    首先要声明使用ajax 在 router下边的 Index.js中 import VueResource from 'vue-resource'; Vue.use(VueResource); ajax ...

  6. js实现第一次打开网页弹出指定窗口(常用功能封装很好用)

    js实现第一次打开网页弹出指定窗口(常用功能封装很好用) 一.总结 1.常用功能封装:之前封装的cookie的操作函数非常好用,我自己也可以这么搞 二.js实现第一次打开网页弹出指定窗口 练习1:第一 ...

  7. 前端基础功能,原生js实现轮播图实例教程

    轮播图是前端最基本.最常见的功能,不论web端还是移动端,大平台还是小网站,大多在首页都会放一个轮播图效果.本教程讲解怎么实现一个简单的轮播图效果.学习本教程之前,读者需要具备html和css技能,同 ...

  8. JavaScript学习总结【12】、JS AJAX应用

    1.AJAX 简介 AJAX(音译为:阿贾克斯) = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技 ...

  9. 06: AJAX全套 & jsonp跨域AJAX

    目录: 1.1 AJAX介绍 1.2 jQuery AJAX(第一种) 1.3 原生ajax(第二种) 1.4 iframe“伪”AJAX(第三种) 1.5 jsonp跨域请求 1.6 在tornad ...

随机推荐

  1. Python之让 字符串内的转义字符 不做任何处理

    一.在字符串前面加上 'r' 就可以了 print("\ntext_1") print(r"\ntest_2") 二.在转义字符的 '\' 前面再加一个 '\' ...

  2. Nmap脚本使用

    Nmap是主机扫描工具,他的图形化界面是Zenmap,分布式框架为Dnamp. Nmap可以完成以下任务: 主机探测 端口扫描 版本检测 系统检测 支持探测脚本的编写 Nmap在实际中应用场合如下: ...

  3. Python 判断字符串是否包含中文

    一.摘要 使用 xlrd 模块打开带中文的excel文件时,会报错. FileNotFoundError: [Errno 2] No such file or directory: 'xx.xlsx' ...

  4. python爬虫-80电子书,爬图片

    ''' 作者:Caric_lee 日期:2018 查看图片 ''' import requests from bs4 import BeautifulSoup r = requests.get(&qu ...

  5. docker 入坑3

    查看镜像 docker images [OPTIONS] [REPOSITORY[:TAG]] -a, --all=false -f, --filter=[] --no-trunc=false -q, ...

  6. Java Swing 资料(转载学习)

    Swing图像界面简介:https://blog.csdn.net/xietansheng/article/details/72814531 Swing实用经验总结篇:https://blog.csd ...

  7. AppRTC服务搭建(测试)

    提供一个在线的webrtc服务器测试,需要的朋友看看.https://www.webrtcserver.cn/ 服务器搭建环境各有不同在此参考前人经验差试一下. 运行AppRTC需要使用Google ...

  8. js点击按钮复制内容到粘贴板

    复制内容到粘贴板,就是要选择需要复制的内容并执行document.execCommand("copy")命令: //复制内容到粘贴板 function copyToClipboar ...

  9. javascript 区域外事件捕捉setCapture

    今天遇到了这个方法,便去度娘了解了下 函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获.一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内.同一时刻只能有一个窗口捕获鼠标. ...

  10. Matlab相关函数使用

    1.cat:拼接两个数组.