JS AJAX和JSONP的基础功能封装以及使用示例;
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的基础功能封装以及使用示例;的更多相关文章
- 从 AJAX 到 JSONP的基础学习
目录索引: 一.AJAX的概念二.POST && GET三.原生实现AJAX简单示例 3.1 实现代码 3.2 重点说明四.框架隐藏域 4.1 基本概念 4.2 后台写入脚本 4.3 ...
- 原生javascript封装ajax和jsonp
在我们请求数据时,完成页面跨域,利用原生JS封装的ajax和jsonp: <!DOCTYPE html> <html lang="en"> <head ...
- 用原生JS实现AJAX和JSONP
前端开发在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的.其实,原生 ...
- ajax和jsonp的封装
一直在用jQuery的ajax,跨域也是一直用的jQuery的jsonp,jQuery确实很方便,$.ajax({...})就可以搞定. 为了更好的理解ajax和jsonp,又重新看了下书,看了一些博 ...
- vue.js的ajax和jsonp请求
首先要声明使用ajax 在 router下边的 Index.js中 import VueResource from 'vue-resource'; Vue.use(VueResource); ajax ...
- js实现第一次打开网页弹出指定窗口(常用功能封装很好用)
js实现第一次打开网页弹出指定窗口(常用功能封装很好用) 一.总结 1.常用功能封装:之前封装的cookie的操作函数非常好用,我自己也可以这么搞 二.js实现第一次打开网页弹出指定窗口 练习1:第一 ...
- 前端基础功能,原生js实现轮播图实例教程
轮播图是前端最基本.最常见的功能,不论web端还是移动端,大平台还是小网站,大多在首页都会放一个轮播图效果.本教程讲解怎么实现一个简单的轮播图效果.学习本教程之前,读者需要具备html和css技能,同 ...
- JavaScript学习总结【12】、JS AJAX应用
1.AJAX 简介 AJAX(音译为:阿贾克斯) = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技 ...
- 06: AJAX全套 & jsonp跨域AJAX
目录: 1.1 AJAX介绍 1.2 jQuery AJAX(第一种) 1.3 原生ajax(第二种) 1.4 iframe“伪”AJAX(第三种) 1.5 jsonp跨域请求 1.6 在tornad ...
随机推荐
- String和Irreducible Polynomial(2019牛客暑期多校训练营(第七场))
示例: 输入: 4000010010111011110 输出: 00001001 0111 01111 0 题意:给出一个只含有0和1的字符串,找出一种分割方法,使得每个分割出的字符串都是在该字符串自 ...
- 【LEETCODE】42、922. Sort Array By Parity II
package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * ...
- 1. RDD概念
1.1 RDD为什么会产生? RDD 是 Spark 的基石,是实现 Spark 数据处理的核心抽象.那么 RDD 为 什么会产生呢? Hadoop 的 MapReduce 是一种基于数据集的工作模式 ...
- gitlab-runner 的 executors 之 docker
gitlab-runner 的 executors 之 docker GitLab Runner 实现了许多执行程序,可用于在不同的场景中运行构建.所有执行程序分别为: SSH Shell Paral ...
- gitlab 安装、备份与还原及常见设置
gitlab 安装.备份与还原及常见设置 安装 安装过程比较简单,跑在 docker 上,执行命令即可 -v参数后面的值为卷的名称,自动创建数据卷(如果数据卷不存在) https://docs.git ...
- 服务端技术选型与考虑(go)
- node-red 流程的导入导出
流程的导入导出 流程的导出 选中所要导出的流程,点击右上角三条杠按钮 有两个选项,导出到剪贴板和库 1. 导出到剪贴板 导出到剪贴板可以复制,粘贴到任何地方 [{,,,,,,"wires&q ...
- Windows server 2012 R2下安装sharepoint2013
• 安装windows server 2012 R2 系统,配置IP.系统打补丁,修改主机名.加域后重启.• 安装WEB服务器,勾选windows身份验证 • 安装应用程序服务器 • 安装.NET F ...
- java第三次面试总结
这次面试是二面,由于自己的经验不足,面试的结果不是很令人满意,所以与这家公司失之交臂,在这里记录一下经历,吸取教训. 之前的一面是笔试+面试,面试是主管,今天的面试是总监.在前台招待我的时候,还跟我说 ...
- isolate sqflite demo
main.dart import 'package:flutter/material.dart'; import 'demo_isolates.dart'; import 'package:rxdar ...