- 浏览: 73650 次
- 性别:
- 来自: 北京
文章分类
最新评论
一直没时间玩js,看到douban网的开放api后,查了些文档,了解了一下 jsonp 跨域请求方式.跟大家分享一下。
其实 jsonp 是个很简单的一个东西。
主要是利用了 <script/> 标签对 javascript 文档的动态解析来实现。(其实也可以用eval函数)
来个超简单的例子:
首先是准备客户端的代码,
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <title>Test Jsonp</title>
- <script type="text/javascript">
- function jsonpCallback(result)
- {
- alert(result.msg);
- }
- </script>
- <script type="text/javascript" src="http://crossdomain.com/jsonServerResponse?jsonp=jsonpCallback"></script>
- </head>
- <body>
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Test Jsonp</title> <script type="text/javascript"> function jsonpCallback(result) { alert(result.msg); } </script> <script type="text/javascript" src="http://www.goudiannao.com/jsonServerResponse?jsonp=jsonpCallback"></script> </head> <body> </body> </html>
其中 jsonCallback 是客户端注册的,获取跨域服务器上的json数据后,回调的函数。
http://crossdomain.com/jsonServerResponse?jsonp=jsonpCallback
这个 url 是跨域服务器取 json 数据的接口,参数为回调函数的名字,返回的格式为
jsonpCallback({msg:'this is json data'})
Jsonp原理:
首先在客户端注册一个callback, 然后把callback的名字传给服务器。
此时,服务器先生成 json 数据。
然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.
最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。
客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)
发表评论
-
web打印控件|打印预览
2010-10-30 17:18 342web打印控件|打印预览 http://files.cnblo ... -
js日期控件
2010-11-27 22:37 285<script language="javas ... -
跨域访问 js 使用json script 跨域访问
2010-07-27 11:19 285js跨域调用一直是个问题困扰着很多人 用ajax 是实现不了的 ... -
判断html修改日期
2010-08-18 23:23 295<script type="text/java ... -
让iframe 100%填充页面代码|100% height|100% width
2010-08-23 10:09 336让iframe 100%填充页面代码 要想让iframe 高1 ... -
jquery 获取radio 选中的值
2010-09-16 10:48 362var val = $("input[@n ... -
showModalDialog参数详解|使用方法
2010-09-17 11:40 258基本介绍: showModalDialog ... -
fck editor 编辑器例子下载|配置说明
2010-09-26 11:26 227将例子里的fck文件夹考到你的站点目录里 然后将web.con ... -
jquery控件|jquery ui 控件 例子 含 message|window |dialog
2010-09-26 11:40 269jquery的优秀的控件库 包括常用 messager dia ... -
省市区联动控件
2010-09-27 14:25 219<input type="text" ... -
js解析xml文件
2010-02-04 17:05 332function initTreeNode(dtree) ... -
左右移动的js分割面板
2010-02-26 10:04 292<!DOCTYPE html PUBLIC " ... -
jquery ui dialog|popup 弹出窗口层
2010-03-25 16:53 456jquery ui dialog|popup 弹出窗口层 ... -
“Internet Explorer无法打开站点,已终止操作”解决
2010-03-31 14:47 499“Internet Explorer无法打开站点,已终止操作” ... -
jquery ajax POST 例子详解
2010-04-08 10:28 342function test(){ $.ajax({ ... -
js 跨域访问 找了好长时间
2010-07-26 23:07 261一直没时间玩js,看到douban网的开放api后,查了些文档 ... -
跨域访问 js 使用json script 跨域访问
2010-07-27 11:19 277js跨域调用一直是个问题困扰着很多人 用ajax 是实现不了的 ... -
判断html修改日期
2010-08-18 23:23 229<script type="text/java ... -
让iframe 100%填充页面代码|100% height|100% width
2010-08-23 10:09 424让iframe 100%填充页面代码 要想让iframe 高1 ...
相关推荐
由于谷歌浏览器停止对flash的支持,所以项目中用到的pdf预览插件需要更换。...在文件跨域访问上花费了很长时间,走了很多弯路才解决问题。下载和打印按钮的隐藏处理相对简单粗暴直接把view.html工具栏的div隐藏即可
2. **创建WebRequest对象**:使用`WebRequest.Create()`方法创建请求对象,并设置超时时间以防止长时间无响应。 3. **设置请求属性**:通过`WebRequest.ContentType`设置请求类型为POST,表明我们要发送的数据格式。...
在JavaScript中,实现长时间的JS会话涉及到以下几个关键知识点: 1. **Cookie管理**:最常见的方式是通过Cookie来保存会话ID。JavaScript的`document.cookie`属性可以用于设置、读取和删除Cookie。设置Cookie时,...
如果处理JSON数据需要较长时间,应考虑在Android端使用异步处理,以避免阻塞UI线程。 在实际项目中,`AndroidInvokeJS`可能包含了示例代码,包括Android端的Java代码以及展示如何在JavaScript中调用这些方法的HTML...
这包括减少DOM操作、避免阻塞主线程的长时间计算、合理使用缓存、压缩和合并代码等策略。 十、跨域通信 由于同源策略的限制,JavaScript在不同源之间不能直接通信。但通过JSONP、CORS、WebSocket和代理服务器等方式...
7. **考虑性能**:大文件可能会导致加载时间较长,考虑使用流式加载或分块加载技术。此外,为了解决内存占用问题,可以考虑使用PDF.js的内存管理功能。 8. **安全性**:确保服务器上的PDF文件安全无害,因为pdf.js...
此外,适当调整WCF服务的超时时间,避免因为长时间等待导致的请求失败。 总结,JavaScript调用WCF服务涉及服务的创建、配置、数据格式的选择、跨域访问的设置、客户端的调用以及错误处理和性能优化等多个环节。掌握...
原生js实现ajax请求和JSONP跨域请求操作示例的知识点涉及了Web前端技术中的核心知识点,主要介绍的是如何使用JavaScript原生代码来发起网络请求以及如何处理跨域问题。以下是对给定文件内容中知识点的详细解读: 1....
但由于其原始API限制较多,如不支持跨域、最大长度限制等,jQuery.cookie.js进行了封装,解决了这些问题。它使用正则表达式解析和构建Cookie字符串,同时提供了一套完整的API来简化操作。 总结,jQuery.cookie.js是...
例如,上述示例中计算1到9999之间的所有质数,如果直接在主线程执行,会使得页面长时间无响应。 为了解决这个问题,JavaScript 引入了 Worker 线程。Worker 线程可以在后台独立于主线程运行,不会影响用户界面的...
今天被这个关于m3u8视频播放不了搞了一下午,这个项目所有的视频流都是m3u8格式的,后台给我们返回的都是m3u8格式的视频流,解决了好长时间,看了好多博客,只有这个博客给我点启发,去解决这个问题,请查看。...
JavaScript并不保证数据安全性,因为它运行在客户端,数据可以通过JavaScript访问和篡改。同源策略是JavaScript的一项安全措施,限制了它只能对同一源的Web服务器发起请求,防止跨域数据泄露。因此,框架和AJAX的...
- `allowScriptAccess`参数:允许JavaScript访问Flash,如`allowScriptAccess="always"`,确保JavaScript可以与Flash交互。 4. **JavaScript控制Flash**: - 使用`ExternalInterface.call`在ActionScript中调用...
原生JavaScript时间日期格式转换 - **功能概述**:将日期对象转换为指定格式的字符串。 - **应用场景**:日期数据显示、数据导出等。 - **实现方式**:使用`Date`对象的属性和方法,结合字符串拼接。 #### 8. 原生...
然而,这个描述中提供的JS脚本就是为了解决这个问题,实现跨域设置Cookie。 脚本首先定义了一个名为`setcookitarray`的变量,存储了一系列URL。这些URL看起来是用于SSO服务端进行Cookie设置的接口。数组的元素包括...
7. **跨域问题**:默认情况下,JavaScript的同源策略限制了Ajax请求只能访问同一域名下的资源。但通过设置服务器端的CORS(跨源资源共享)头或者使用JSONP(JSON with Padding)可以解决跨域问题。 8. **安全和性能...
当这些文件过大或者网络状况不佳时,用户的浏览器需要花费较长时间下载,从而延长页面的加载时间。将JavaScript文件托管到异地,比如知名的CDN(Content Delivery Network)服务,可以利用其全球分布的服务器节点,让...
通过掌握这些JavaScript小技巧,开发者不仅能够提升代码的健壮性和性能,还能更好地应对不同场景下的需求,为用户提供更加流畅和安全的网页体验。在实际应用中,建议遵循最佳实践,确保代码的可读性和可维护性。