1.代码:

  1. function ajax(options){
  2. options = options || {};
  3. options.type = options.type || "get";
  4. data = options.data || {};
  5. // 处理数据
  6. var str = "";
  7. for(var i in data){
  8. //str += `${i}=${data[i]}&`; //IE不兼容模板字符串 ----update by 12-02
               str = str + i + "=" + data[i] + "&"; }
  9. // 判断type类型拼接url
  10. if(options.type == "get" || options.type == "jsonp"){
  11. var d = new Date();
  12. //url = `${options.url}?${str}d=${d.getTime()}`; //IE不兼容模板字符串 ----update by 12-02
  1.            url = options.url + "?" + str + "_jwy" + "=" + d.getTime(); }else{
  2. url = options.url;
  3. }
  4. // console.log(`拼接后的url是${url}`);
  5. // 判断type类型走jsonp还是创建ajax
  6. if(options.type == "jsonp" ){
  7. var script = document.createElement("script");
  8. script.src = url;
  9. document.body.appendChild(script);
  10. // console.log(`走了jsonp的方法,url是${url}`)
  11. window[data[data.colmName]] = function(responseText){
  12. options.success(responseText);
  13. }
  14. }else{
  15. var xhr;
  16. //兼容性
  17. if(window.XMLHttpRequest){
  18. xhr = new XMLHttpRequest();
  19. }else if(window.ActiveObject){
  20. xhr = new ActiveXobject('Microsoft.XMLHTTP');
  21. }
  22. // 发送请求
  23. if(options.type == "get"){
  24. // console.log(`走了get的方法,url是${url}`)
  25. xhr.open("get",url,true);
  26. xhr.send(null)
  27. }else{
  28. // console.log(`走了post的方法,url是${options.url},参数是${str}`)
  29. xhr.open("post",url,true);
  30. xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  31. xhr.send(str.slice(0,str.length-1));
  32. }
  33. // 接收数据
  34. xhr.onreadystatechange = function(){
  35. if(xhr.readyState == 4){
  36. var status = xhr.status;
  37. if(xhr.readyState == 4 && xhr.status == 200){
  38. options.success(xhr.responseText,xhr.status);
  39. }else{
  40. options.error(xhr.responseText,xhr.status)
  41. }
  42. }
  43. }
  44. }
  45. }

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

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

3.使用示例:

  POST请求:

  1. ajax({
  2. url:"data.php",
  3. data:{
  4. user:"admin",
  5. pass:23213
  6. },
  7. type:"post",
  8. success:function(res,status){
  9. console.log(res);
  10. console.log(status);
  11. },
  12. error:function(res,status){
  13. console.log(res);
  14. console.log(status);
  15. }
  16. })

  GET请求:

  1. //type不传默认是get
  2. ajax({
  3. url:"data.php",
  4. data:{
  5. user:"admin",
  6. pass:23213
  7. },
  8. success:function(res,status){
  9. console.log(res);
  10. console.log(status);
  11. },
  12. error:function(res,status){
  13. console.log(res);
  14. console.log(status);
  15. }
  16. })

  JSONP:

  1. //以百度搜索接口为例
  2. ajax({
  3. url:"https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su",
  4. data:{
  5. wd:"上海",
  6. colmName:"cb",
  7. cb:"adsaa"
  8. },
  9. success:function(res,status){
  10. console.log(res);
  11. console.log(status);
  12. },
  13. error:function(res,status){
  14. console.log(res);
  15. console.log(status);
  16. }
  17. })

  

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基础 — time库

    时间获取-------time() ctime() gmtime() 时间格式化-------strftime()  strptime() 程序计时-------sleep()  perf_count ...

  2. mysql实践一:SQL基础

    mysql简介 mysql是有名的开放源代码关系型数据库.它最早是AB公司开源的,后来到Sun公司手中.之后Sun公司被Oracle公司收购,mysql就归Oracle所有.从此mysql走向商业化, ...

  3. 精确选择识别png图片有像素的区域

    /** * * *---------------------------------------* * | ***精确选择识别png图片有像素的区域*** | * *----------------- ...

  4. Gym 102055B Balance of the Force

    大意: $n$个骑士, 第$i$个骑士若加入光明阵营, 那么能力值$L_i$, 加入黑暗阵营, 能力值$D_i$. 给定$m$个限制$(u_i,v_i)$, 表示$u_i,v_i$不能在同一阵营. 求 ...

  5. The three day 给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本

    """ 给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本. 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 ...

  6. 全栈项目|小书架|微信小程序-项目结构设计分包

    前面的文章 介绍了服务端的基础搭建以及用户模块的设计,接下来就是在服务端和客户端实现具体的业务了. 本篇文章先来介绍微信小程序开发的项目结构设计,也就是项目分包情况. 由于项目是在<极客时间-9 ...

  7. python 直角图标生成圆角图标

    参考链接:https://stackoverflow.com/questions/11287402/how-to-round-corner-a-logo-without-white-backgroun ...

  8. ES6之promise原理

    我在这里介绍了promise的原理: https://juejin.im/post/5cc54877f265da03b8585902 我在这里 仅仅张贴 我自己实现的简易promise——DiProm ...

  9. Android Jetpack组件

    带你领略Android Jetpack组件的魅力 Android新框架jetpack的内容讲解:Room.WorkManager.LifeCycles.LiveData.ViewModel.DataB ...

  10. 用户在浏览器输入URL回车之后,浏览器都做了什么

    在直接列出执行的步骤之前先来普及几个知识,相信了解完这些知识之后会对前后端的交互有更深入的理解. 1.TCP连接 TCP:Transmission Control Protocol, 传输控制协议,是 ...