JSONP和批量操作功能的实现方法


Posted in Javascript onAugust 21, 2016

推荐一个好用的在线 Markdown 编辑器,比我自己用 Python 编译成 markdown 要方便多了。

[http://mahua.jser.me]

markdown简明语法教程

[http://www.appinn.com/markdown/]

好东西会让人免费为其推广,希望我自己也能做出几个有用的小工具。

一、JSONP的使用

jsonp,是一种数据格式,用来解决跨域问题。

比如,在 admin.chugang.net 需要一个二维码,而在 www.chugang.net 中已经存在生成二维码的功能。当然可以将www.chugang.net中生成

二维码的代码复制一套到 admin.chugang.net 中。但这造成了代码的重复,此种解决方案,是不被提倡的。于是,我采用 www.chugang.net
提供API供 admin.chugang.net 调用的方案。

admin.chugang.net 使用JS调用 www.chugang.net 的接口,遇到了跨域问题。普通的ajax请求
代码,如下:

$.ajax({
type : "post",
url : 'http://www.chugang.net/api',
dataType : 'json',
data : {'id' : 5, 'type' : 3},
beforeSend : function(){},
success : function(returnMsg){
//
},
error : function(){
} 
});

在使用过程中,若使用的是firefox,firebug插件会提示不能跨域请求。

听别人说过JSONP能解决跨域调用问题,但一直没有遇到过跨域场景,也没有使用过。直到在折腾自己的博客的过程中,因为博客代码的路由功能不完善,导致我使用异步请求输出数据的时候,遭遇跨域问题。直接搜索“JSONP",对照相关资料,解决了问题。具体代码,我仍然不能
写出,如果需要我再解决相同的问题,我仍然需要查找demo,然后copy过来修改。但我记得,关键词是

$.getJSON

它是用来读取数据的。

前些天,在工作中,遇到类似问题,正好温习一下JSONP。不过,该场景下,并不是读取数据,而是写数据的。网上找来的demo是这样的:

$.ajax({
type : 'post',
url : 'http://www.chugang.net/api',
dataType : 'jsonp',
data : {'username' : 'cg', 'action' : 'add'},
beforeSend: function(){},
success : function(returnMsg){
if(returnMsg.success){ //注意,此处,与普通ajax请求并无差异
//do something
}else{
//do anthorthing
}
},
error : function(){
}
});

这是客户端的,服务端的代码是这样的:

$callBack = isset($_GET['callBack'])?$_GET['callBack']:'';
$returnMsg = [
'code' : 1000,
'success' : true,
'message' : 'Nothing is difficult if you put your heart into it!',
];
$json = json_encode($returnMsg);
echo $classBack . '(' . $json. ')';

记得不准确,不能保证上述代码的正确性,但关键点都写出来了。客户端代码,可能遗漏点多一些。

上面的场景,除了使用JSONP来解决跨域,还有另一种方案。

在 admin.chugang.net 写一个接口,在此接口中调用 www.chugang.net 提供的接口,然后再用普通的ajax请求
来调用 admin.chugang.net 中提供的接口。这样就可以避免跨域。

此种方案,引申出一个问题。刚遇到ajax调用接口跨域的时候,我很疑惑:之前我曾大量调用其他不同域名站点的接口,为啥就没有遇到跨域问题呢?稍微想想,知道了原因:之前的调用接口,是使用curl等方式,而不是JS;JS中才存在跨域。

提到跨域,工作中遇到过字体跨域的问题,需要配置nginx服务器。根据浏览器的跨域提示,一搜索就能得到大量雷同的解决方案,然而,这些方案并不起作用。后来仍然是通过检索,获得了有效的方案。具体配置代码,我不记得了,它的作用是,对需要跨域的文件(比如字体),不
光要配置跨域,还要设置这些文件所在的目录。nginx的站点目录,并不是这些跨域文件的目录。

十分佩服解决那个问题的网络大神,他根据日志,大胆假设尝试求证,解决问题。不像我,只能搜索现成的方案。

回头把解决字体跨域的代码补充到这篇文章。

不仅如此,关于jsonp的知识点,也要补充并且修正错误内容。博客不仅要起到输出知识的作用,还要尽量保证其正确性。

二、批量操作功能

列表的批量操作,并且是异步请求,需要向服务端提交两类数据,一个是需要操作的数据的标识,比如PK,一个是操作类型,比如删除。

这个请求由“确定”按钮触发。

获取需要操作的数据的标识,需要遍历

<input type="checkbox" name="id[]" />

用到的JS知识点:遍历、判断是否选中、获取 input 的value。

获取操作类型,需要获取

<select>
<option value="show">Show</option>
<option value="update">Update</option>
</select>

这些操作,快速写出来,我连百分之七十的把握都没有,当然,借助搜索引擎,可以较快搞定。

以上所述是小编给大家介绍的JSONP和批量操作功能的全部叙述,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript查找字符串中出现最多的字符和次数的小例子
Oct 29 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
Oct 30 Javascript
javascript感应鼠标图片透明度显示的方法
Feb 24 Javascript
javascript精确统计网站访问量实例代码
Dec 19 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
Jan 13 Javascript
js 连续赋值的简单实现
Jun 13 Javascript
常用原生js自定义函数总结
Nov 20 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
Nov 30 Javascript
深入理解requireJS-实现一个简单的模块加载器
Jan 15 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
Sep 10 Javascript
JS求解两数之和算法详解
Apr 28 Javascript
javascript对象3个属性特征
Nov 17 Javascript
全面解析标签页的切换方式
Aug 21 #Javascript
JavaScript第一篇之实现按钮全选、功能
Aug 21 #Javascript
JS实现图片局部放大或缩小的方法
Aug 20 #Javascript
JS获取及验证开始结束日期的方法
Aug 20 #Javascript
jquery弹出框插件jquery.ui.dialog用法分析
Aug 20 #Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
Aug 20 #Javascript
JS关闭窗口时产生的事件及用法示例
Aug 20 #Javascript
You might like
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
js实现验证码干扰(静态)
2021/02/22 Javascript
python ip正则式
2009/05/07 Python
Django框架下在视图中使用模版的方法
2015/07/16 Python
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
python3安装crypto出错及解决方法
2019/07/30 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
python 操作hive pyhs2方式
2019/12/21 Python
python字符串,元组,列表,字典互转代码实例详解
2020/02/14 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
Python通过字典映射函数实现switch
2020/11/06 Python
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
购买原创艺术品:Zatista
2019/11/09 全球购物
销售人员自我评价怎么写
2013/09/19 职场文书
教学个人的自我评价分享
2014/02/16 职场文书
财产公证书样本
2014/04/04 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
社团活动总结范文
2014/04/26 职场文书
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS