JQUERY-自定义插件-ajax-跨域访问
正课:
1. ***自定义插件:
2. Ajax
3. *****跨域访问:
1. ***自定义插件:
前提: 已经用html,css,js实现了
2种风格:
1. jQueryUI侵入式:
1. css应提取到独立的css文件中
强调: 所有插件内的子元素选择器都要以插件父元素class开头,避免与其他插件冲突。
2. 定义独立的js文件:
1. 判断是否引入jQuery
2. 在jQuery的原型对象中添加插件函数
1. 侵入class和自定义扩展属性
2. 绑定事件
3. 使用插件:
引入插件.css,
按插件要求编写HTML内容
引入jQuery
引入插件.js
编写自定义脚本: 查找插件父元素,调用插件API
2. Bootstrap DIV式:
1. css应提取到独立的css文件中: 同jQueryUI方式
2. 定义独立的js文件:
强调: 不需要添加函数,不用侵入
3. 使用插件:
引入插件.css
按插件要求编写HTML内容
在HTML元素上,手动添加class和自定义扩展属性
引入jQuery
引入插件.js
强调: 不需要调用任何插件函数
2. Ajax:
$.ajax({
type:"get/post",
url:"xxx.php",
data: 查询字符串/{ 参数:值, 参数:值, ...}/$form.serialize(),
dataType:"json"//如果返回json,则自动转为对象,
success:function(data){ //请求响应结束且成功
},
error:function(){ //请求响应结束,但出错
},
complete:function(){ //只要请求响应结束
}
})//3.x
.then(function(data){ ... })
dataType: 如果服务端定义了响应的内容类型为applicaton/json, 则$.ajax可自动转换,不必写dataType
$.get("url", data, function(data){...}, dataType)
$(parent).load("url",function(){ ... }) 将返回的内容,填充到parent内
$.getJSON()
$.getScript()
$.post()
3. *****跨域请求:
什么是跨域:
1. 域名不同, 2. 二级域名不同, 3. 端口号不同, 4. 协议
问题: 服务端不允许用xhr对象跨域发送ajax请求
解决: 利用可以跨域的元素(link, script, iframe, img, ... )
1.用script变通实现跨域请求:
JSONP: JSON with padding 填充式json
方案1:
服务端: 将返回的数据,填充在一条js语句中返回
客户端: 用script src="http://xxx/xx.php"
问题: 客户端数据的处理逻辑是在服务端写死的,众口难调
方案2:
服务端: 返回一条函数调用的js语句,将数据作为参数
客户端: 提前定义和服务端同名的js函数
问题: 函数名是在服务器端定死的
方案3:
服务端: 先接受客户端传入的函授名参数(callback)
在返回结果中动态拼接函数名
客户端: script src="xxx.php?callback=函数名"
问题: script是写死的,只能在页面加载时发送一次请求
方案4:
客户端: 不要写死script
在处理函数中,动态创建script,发送请求
在处理函数结尾,删除动态创建的script
问题: 和传统ajax不一致!
方案5:
$.ajax({
type:"",
url:"",
data:...,
dataType:"jsonp",
success:function(){
}
})
2. 通过服务器端开放跨域:
php: header('Access-Control-Allow-Origin:http://请求来自的网址');
正课:
1. ***自定义插件:
2. Ajax
3. *****跨域访问:
1. ***自定义插件:
前提: 已经用html,css,js实现了
2种风格:
1. jQueryUI侵入式:
1. css应提取到独立的css文件中
强调: 所有插件内的子元素选择器都要以插件父元素class开头,避免与其他插件冲突。
2. 定义独立的js文件:
1. 判断是否引入jQuery
2. 在jQuery的原型对象中添加插件函数
1. 侵入class和自定义扩展属性
2. 绑定事件
3. 使用插件:
引入插件.css,
按插件要求编写HTML内容
引入jQuery
引入插件.js
编写自定义脚本: 查找插件父元素,调用插件API
2. Bootstrap DIV式:
1. css应提取到独立的css文件中: 同jQueryUI方式
2. 定义独立的js文件:
强调: 不需要添加函数,不用侵入
3. 使用插件:
引入插件.css
按插件要求编写HTML内容
在HTML元素上,手动添加class和自定义扩展属性
引入jQuery
引入插件.js
强调: 不需要调用任何插件函数
2. Ajax:
$.ajax({
type:"get/post",
url:"xxx.php",
data: 查询字符串/{ 参数:值, 参数:值, ...}/$form.serialize(),
dataType:"json"//如果返回json,则自动转为对象,
success:function(data){ //请求响应结束且成功
},
error:function(){ //请求响应结束,但出错
},
complete:function(){ //只要请求响应结束
}
})//3.x
.then(function(data){ ... })
dataType: 如果服务端定义了响应的内容类型为applicaton/json, 则$.ajax可自动转换,不必写dataType
$.get("url", data, function(data){...}, dataType)
$(parent).load("url",function(){ ... }) 将返回的内容,填充到parent内
$.getJSON()
$.getScript()
$.post()
3. *****跨域请求:
什么是跨域:
1. 域名不同, 2. 二级域名不同, 3. 端口号不同, 4. 协议
问题: 服务端不允许用xhr对象跨域发送ajax请求
解决: 利用可以跨域的元素(link, script, iframe, img, ... )
1.用script变通实现跨域请求:
JSONP: JSON with padding 填充式json
方案1:
服务端: 将返回的数据,填充在一条js语句中返回
客户端: 用script src="http://xxx/xx.php"
问题: 客户端数据的处理逻辑是在服务端写死的,众口难调
方案2:
服务端: 返回一条函数调用的js语句,将数据作为参数
客户端: 提前定义和服务端同名的js函数
问题: 函数名是在服务器端定死的
方案3:
服务端: 先接受客户端传入的函授名参数(callback)
在返回结果中动态拼接函数名
客户端: script src="xxx.php?callback=函数名"
问题: script是写死的,只能在页面加载时发送一次请求
方案4:
客户端: 不要写死script
在处理函数中,动态创建script,发送请求
在处理函数结尾,删除动态创建的script
问题: 和传统ajax不一致!
方案5:
$.ajax({
type:"",
url:"",
data:...,
dataType:"jsonp",
success:function(){
}
})
2. 通过服务器端开放跨域:
php: header('Access-Control-Allow-Origin:http://请求来自的网址');
JQUERY-自定义插件-ajax-跨域访问的更多相关文章
- 关于JQuery Ajax 跨域 访问.net WebService
关于这个 jQuery Ajax跨域访问 WebService 前天整了好几个小时没整明白 今天再看一下 结果突然就顿悟了 1.建一个空webApplication --添加--新建项--web服务( ...
- 浅析JSONP-解决Ajax跨域访问问题
浅析JSONP-解决Ajax跨域访问问题 很久没有写随笔了,总是感觉没时间,其实时间就是...废话少说,前几天,工作上有一新需求,需要前端web页面异步调用后台的Webservice方法返回信息.实现 ...
- ajax跨域访问的解决方案
今天的工作中要访问摄像机内部的一个web站点,这就涉及到jquery的ajax跨域访问的问题.我使用的是jquery1.7的版本,下面总结如下: 问题一:一开始用IE调试,总是返回No Transpo ...
- Web Api 2(Cors)Ajax跨域访问
支持Ajax跨域访问ASP.NET Web Api 2(Cors)的简单示例教程演示 随着深入使用ASP.NET Web Api,我们可能会在项目中考虑将前端的业务分得更细.比如前端项目使用Ang ...
- Ajax跨域访问解决办法
方法1. jsonp实现ajax跨域访问示例 jsp代码: <body> <input type="button" onclick="testJsonp ...
- ajax 跨域访问的解决方案
ajax 跨域访问的解决方案 一.什么是跨域: 1.什么样的请求属于跨域: 域名,端口有任何一个不相同都属于跨域: 二.跨域的常用几种解决方案: 1.jsonp: 2.iframe: 3.webcon ...
- Hbuilder编辑App时,ajax跨域访问失败问题
今天试着用Hbuilder写app的前段显示页面,在第一步时就被打住了,ajax异步调用服务器的登录接口时,报错, 显示这样的错误 XMLHttpRequest cannot loadhttp://w ...
- JS Ajax跨域访问
js ajax跨域访问报"No 'Access-Control-Allow-Origin' header is present on the requested resource 如果请求的 ...
- ajax跨域访问http服务--jsonp
在前面一篇文章<Spring Cloud 前后端分离后引起的跨域访问解决方案>里我们提到使用ajax跨域请求其他应用的http服务,使用的是后台增加注解@CrossOrigin或者增加Co ...
- Jquery Ajax跨域访问
一.同源策略 二.跨域的集中方法: 1.服务器端发送请求,服务器作为中继代理(此方法不理解) 2.iframe 3.script标签 通过动过动态生成script标签,并将src指向目标源的方式(im ...
随机推荐
- Spring的回滚问题
再说下声明式事务和注解事务回滚的原理:当被切面切中或者是加了注解的方法中抛出了RuntimeException异常时,Spring会进行事务回滚.默认情况下是捕获到方法的RuntimeExceptio ...
- JEECG 集成KiSSO单点登录实现统一身份认证
JEECG 集成KiSSO单点登录实现统一身份认证 JEECG 如何为其他第三方系统实现统一身份认证服务,实现单点登录? 第三方系统如何对接呢? 今天为大家揭开这层面纱,让大家了解实质,使用它更快速的 ...
- Spring Security 理解小记
JWT 框架图如下, 来自博客https://blog.csdn.net/shehun1/article/details/45394405 个人觉得还不错.. 在开发中Spring boot 启用 加 ...
- HBASE分布式集群搭建(ubuntu 16.04)
1.hbase是依赖Hadoop运行的,因此先确保自己已搭建好Hadoop集群环境 没安装的可以参考这里:https://www.cnblogs.com/chaofan-/p/9740408.html ...
- 中兴iptv机顶盒破解教程图文:亲测中兴B760EV3、B860A、B860AV1.1完美安装应用!非ttl破解![转]
一直以为中兴的这几个盒子只能通过ttl来破解,不过现在再也不用这么麻烦了,有了这个工具,前后破解不超3分钟!理论上支持所有中兴的iptv机顶盒的破解! 亲测中兴B760EV3.B860A.B860AV ...
- MongoDB基础入门
1,安装 下载解压安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.5.tgz tar -xvzf mongodb- ...
- java mybatis后台判断表是否存在mysql
<select id="isTableExist" parameterType="string" resultType="int"&g ...
- 第一次oo博客作业--表达式求导
(1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高 ...
- LeetCode至 少有 1 位重复的数字
给定正整数 N,返回小于等于 N 且具有至少 1 位重复数字的正整数. 示例 1: 输入:20 输出:1 解释:具有至少 1 位重复数字的正数(<= 20)只有 11 . 示例 2: 输入:10 ...
- UnitZ Battlegrounds beta5 - Unity吃鸡类型游戏模版 源码 仿绝地求生
Requires Unity 2018.2.6 or higher.The first battle royale game starter kit on Asset Store, all syste ...