首页 > 语言 > JavaScript > 正文

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

2024-05-06 14:52:46
字体:
来源:转载
供稿:网友

推荐一个好用的在线 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请求

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选