好久都没有写随笔了,最近大家都忙着考试要放假了,我也要忙一忙喽.....不过再忙我还是来啦

简单的说,json是一种轻量级的数据交换格式。平时我们使用ajax等使用的一种数据形式,那么今天就说说jsonp是个什么鬼。首先接触的时候也是一脸懵逼,都不清楚这是什么东西,上网搜啊查啊,最后才弄明白了。

我们平时在写项目的时候前端后端交互数据用的是json,但是如果你想跨域进行数据访问,比如别的网站想看到你的数据或者你想看到别人的数据,不能用json格式进行传送数据,有才的人啊就发现还有jsonp。老实说,jsonp就是满足你跨域读取数据的一种方法,下面就直接看代码吧。

public function actionIndex(){header('Content-type: application/json');//获取回调函数名$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);//把预定义的字符转换为 HTML 实体。$resourceid = $_GET["resource_id"];$resourceid = base64_decode($resourceid);$resourceid = SafetyHelper::KillDangerCode($resourceid);if(empty($resourceid) || is_numeric($resourceid)==false){$json_data= json_encode(array("code"=>300,"msg"=>"素材ID错误","data"=>array()));echo $jsoncallback . "(" . $json_data . ")";die();}$resource = Resource::model()->find("id=".$resourceid);if(!empty($resource)){$arr["code"]=200;$arr["msg"]="获取成功";$arr["data"]=array("title"=>$resource->title,"url"=>$resource->filepath,"hits"=>$resource->hits);}else{$arr["code"]=404;$arr["msg"]="资源不存在";$arr["data"]="";}$json_data=json_encode($arr);//输出jsonp格式的数据echo $jsoncallback . "(" . $json_data . ")";}

可以看的出来,比平时我们用json的时候多了两行代码,就是要用这个回调函数来实现输出的格式变为jsonp。这是在PHP页面的代码,另外需要在HTML页面写一个js来调用得到jsonp。

<!DOCTYPE html>
<html lang="en">
<head>  <meta charset="UTF-8">  <title>获取jsonp对象</title>  <script src="jquery.js"></script>
</head>
<body>
<input type="text" id="val" ><input type="button" id="dian" value="点击">  <script>  var url='jsonp.php';
    $("#dian").click(function(){var aa=$("#val").val();var data={jsoncallback:aa};  $.getJSON(url,data,function(msg){            alert(msg);})  })</script>
</body>
</html>  

转载于:https://www.cnblogs.com/xiaonannan/p/7099793.html

跨域,json与jsonp格式相关推荐

  1. PHP的介绍及应用,ajax的介绍及应用,跨域问题及jsonp解决方法

    PHP(服务器编程语言) 服务器由环境(Apache),数据库(mysql),代码(HTML+css +js,php)组成. PHP必须在服务器的环境下执行 php与js最大的区别就是工作环境,PHP ...

  2. 跨域解决方法——jsonp原理

    跨域解决方法--jsonp原理 一个域名地址的组成: 当协议.子域名.主域名.端口号任意一个不相同时,都算作不同域,不同域之间相互请求资源,就算做"跨域".由于浏览器同源策略的限制 ...

  3. springmvc 自定义view支持json和jsonp格式数据返回

    1.如果controlloer上用@ResponseBody注解,则用<mvc:message-converter>里面配置的json解析器进行解析 <mvc:annotation- ...

  4. 【PHP】Ajax跨域解决方案 、jsonp、cors

    [PHP]Ajax跨域解决方案 .jsonp.cors 参考文章: (1)[PHP]Ajax跨域解决方案 .jsonp.cors (2)https://www.cnblogs.com/xuzhengz ...

  5. php 跨域 json,jsonp+php实现跨域

    jsonp跨域原理 json和jsonp的区别 json是一种基于文本的数据交换方式,或者叫做描述数据的一种格式. var person = { "name": "tes ...

  6. php 跨域 json,PHP json格式和js json格式 js跨域调用实现代码

    先看一个js函数 function jsontest() { var json = [{'username':'crystal','userage':'20'},{'username':'candy' ...

  7. js跨域请求方式 ---- JSONP原理解析

    这篇文章主要介绍了js跨域请求的5中解决方式的相关资料,需要的朋友可以参考下 跨域请求数据解决方案主要有如下解决方法: 1 2 3 4 5 JSONP方式 表单POST方式 服务器代理 Html5的X ...

  8. Ajax跨域请求解决方案——jsonp

    转自:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 1.一个众所周知的问题,Ajax直接请求普通 ...

  9. 跨域技术(JSONP与CROS)

    JSONP 我们发现,Web页面上调用js文件时不受是否跨域的影响,凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>.<img>.&l ...

最新文章

  1. oracle pl sql示例,oracle PL SQL学习案例(一)
  2. 成功解决TypeError: Object of type 'ndarray' is not JSON serializable
  3. bash: _upvars: `-a2‘: invalid number specifier bash: /dev/null: 权限不够 bas
  4. 怎么做最棒的有效外链
  5. 终于在VirtualBox中装好了Mac OS的虚拟机了!(
  6. 首次打开(更新版本)APP向导界面
  7. 一文学会JVM常见参数设置+调优经验(JDK1.8)
  8. mysql5.1 主主同步_mysql主主同步指定库的指定表(version 5.1~5.7)
  9. laplace 偏微分方程 MATLAB help
  10. 自己动手实现STL 02:构造析构的基本工具construct()和destroy()(stl_construct.h)
  11. Android布局(4)--相对布局(RelativeLayout)
  12. [2018.10.11 T1] 锻造
  13. matlab绘制二元一次函数图像_基于MATLAB的数学图像绘制
  14. C# BackgroundWorker使用总结
  15. 【NLP】cs224n课程笔记
  16. 裁剪算法——中点分割算法/Liang-Barsky算法
  17. 数据库作业8:SQL练习5 - SELECT(嵌套查询EXISTS、集合查询、基于派生表的查询)
  18. Calcite 原理解析
  19. 编写一个静态方法lg(),接收一个整型参数N,返回不大于log2N(以2为底)的最大整数。不要使用Math库。
  20. 第39级台阶(dp)

热门文章

  1. italic与oblique的区别
  2. vscode设置代码编辑时组合键代替方向键移动光标
  3. 16进制/10进制数转化为浮点型案例
  4. STM32 HAL库 串口DMA(收发)和STM32串口中断接收(接收时间管理机制)+ESP8266 wifi模组通信问题
  5. STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和串口只发送数据不能接收数据问题
  6. 信号公式汇总之傅里叶变换
  7. [YTU]_1066 ( 输入n个数和输出调整后的n个数)
  8. 遗传算法(Genetic Algorithm )+C++实现解决TSP问题
  9. 高滤波器opencv(Python)
  10. html 自定义js,js 自定义事件