CN103368980B - 一种jsonp数据请求方法和装置 - Google Patents
一种jsonp数据请求方法和装置 Download PDFInfo
- Publication number
- CN103368980B CN103368980B CN201210082200.7A CN201210082200A CN103368980B CN 103368980 B CN103368980 B CN 103368980B CN 201210082200 A CN201210082200 A CN 201210082200A CN 103368980 B CN103368980 B CN 103368980B
- Authority
- CN
- China
- Prior art keywords
- data
- jsonp
- error event
- script tag
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施方式提出了一种JSONP数据请求方法和装置。方法包括:在脚本标签中设置出错事件;脚本标签向数据源请求JSONP数据,并当请求所述JSONP数据出现异常时回调该出错事件以触发异常提醒。应用本发明实施方式之后,当发生错误导致无法加载JSONP数据时,通过出错事件的回调处理,可以给出正确提醒,从而用户可以正确了解数据加载情况,提高维护处理成功率。
Description
技术领域
本发明实施方式涉及JSON(JavaScript Object Notation)技术领域,更具体地,涉及一种JSONP数据请求方法和装置。
背景技术
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition-December 1999)的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
简单地说,JSON可以将JavaScript对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且JSON可以表示比“名称/值对”更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
JSONP(JSON with Padding)技术是JSON的一种使用模式,适用于任何Web应用领域,包括PC端、手机终端和一些智能终端设备。其主要是用来解决跨域资源的共享问题,比如Web页面(www.domainA.com/a.html)需要拉取其它域下面的数据(data.domainA.com/data/a.cgi)。如果采用非代理模式的AJAX的话,会报“没有权限”的安全错误,但是JSONP的方式可以避免这个问题产生,从而可以顺利拉取数据。
目前加载JSONP数据过程中,当发生网络异常,如服务器文件无法找到、请求的数据发生内部异常时,客户端将无法得正常的解析。在现有技术中,可以通过以下方案检测数据加载是否发生异常。
第一种方案:在服务器返回数据的末尾定义一个变量,而且在页面上定时检测该变量。如果在某一段时间(该时间可以预先设置)内可以正常取到这个变量,那么说明数据加载成功,否则判断数据加载失败。
第二种方案:在服务器返回数据的末尾定义一个变量,而且给脚本(script)标签添加onload事件,当加载完后通过onload事件判断定义的变量是否存在,如果存在,说明数据加载成功,否则数据加载失败。
然而,第一种方案在网络情况不好的环境下,有可能返回的数据在设置的时间之后,从而存在误判断的情况。第二种方案仍然需要判断定义的标志变量是否存在,会造成处理的逻辑加重,而且不够灵活。
而且,在现有技术中,当发生网络异常而无法获取数据时,经常会持续提醒“正在加载”,而并不给出正确的提醒,从而用户无法了解真实的数据加载情况,而就不能做出正确的维护处理,从而降低了维护处理成功率。
发明内容
本发明实施方式提出一种JSONP数据请求方法,以提高维护处理成功率。
本发明实施方式还提出了一种JSONP数据请求装置,以提高维护处理成功率。
本发明实施方式的具体方案如下:
一种JSONP数据请求方法,该方法包括:
在脚本标签中设置出错事件;
脚本标签向数据源请求JSONP数据,并当请求所述JSONP数据出现异常时回调该出错事件以触发异常提醒。
一种JSONP数据请求装置,该装置包括出错事件设置单元和事件回调单元,其中:
出错事件设置单元,用于在脚本标签中设置出错事件;
事件回调单元,用于脚本标签向数据源请求JSONP数据,并当请求所述JSONP数据出现异常时回调该出错事件以触发异常提醒。
根据上述技术方案可以看出,在本发明实施方式中,首先在脚本标签中设置出错事件,然后脚本标签向数据源请求JSONP数据,并当请求所述JSONP数据出现异常时回调该出错事件以触发异常提醒。由此可见,应用本发明实施方式之后,当发生错误导致无法加载JSONP数据时,通过出错事件的回调处理,可以给出正确提醒,从而用户可以正确了解数据加载情况,提高维护处理成功率。
附图说明
图1为根据本发明实施方式的JSONP数据请求方法实现原理示意图;
图2为根据本发明实施方式的JSONP数据请求方法流程图;
图3为根据本发明实施方式的异常提醒与现有技术中无提醒的对比图;
图4为根据本发明另一实施方式的异常提醒与现有技术中无提醒的对比图;
图5为根据本发明实施方式的JSONP数据请求装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
考虑到JSONP业务的特殊性,本发明实施方式优选适用于装有安卓(Andriod)和iOS等操作系统的智能手机用户。不过,本发明实施方式也可以适用于一般的PC端。实际上,对于任意需要请求JSONP数据的应用场景,都可以通过本发明实施方式的绑定出错事件的方式来解决并提升JSONP数据请求的体验。
图1为根据本发明实施方式的JSONP数据请求方法实现原理示意图。由图1可见,通过在脚本(script)标签中绑定出错(onerror)事件,以处理目标资源文件出现异常的情况。当脚本(script)标签向数据源请求加载数据时,如果出现网络异常,通过回调onerror事件可以向用户给出正确的提醒。
图2为根据本发明实施方式的JSONP数据请求方法流程图。
如图2所示,该方法包括:
步骤201:在脚本(script)标签中设置出错事件(onerror)事件
onerror事件是BOM的标准事件之一。只要页面中发生错误,该事件立即被激活。开发者仅需添加事件处理函数即可。onerror事件被激活后,系统调用其对应的事件处理函数进行响应。
具体地,针对较高版本的浏览器(比如,IE9/Firefox/Chrome等高版本浏览器),可以直接在脚本标签中添加出错事件。出错事件在这里的关键作用是用于处理目标资源文件出现网络异常情况的状况。
在一个实施方式中,可以通过设置HTML属性的方式在脚本标签中设置出错事件。
示范性地,添加方法如下:
<script type=”text/javascript”onerror=”fun()”></script>;
其中fun是事件处理函数,即出现错误时的回调方法。
在另外一个实施方式中,还可以通过文档对象模型(DOM)方式在脚本标签中设置出错事件。
示范性地,添加方法如下:
scriptNode.addEventListener(“error”,fun,false);
其中:scriptNode表示script标签节点对象;
fun是事件处理函数,即出现错误时的回调方法。
步骤202:脚本标签向数据源请求JSONP数据,并当请求所述JSONP数据出现异常时回调该出错事件以触发异常提醒。
在这里,针对出错事件的回调方法进行相关处理,此回调处理主要用于处理对异常情况的交互。
请求JSONP数据出现异常的原因可以有很多种,比如:服务器文件无法找到、请求的数据发生内部异常,网络状态不稳定等等。
优选地,脚本标签可以以异步方式向数据源请求JSONP数据。或者,脚本标签还可以以同步方式向数据源请求JSONP数据。
在一个实施方式中,当网络出现异常导致无法加载JSONP数据时,出错事件得到满足,从而回调该出错事件的事件处理函数。事件处理函数具体可以为在该脚本标签的网页上的显著位置处触发异常提醒。比如:在该脚本标签的网页上的正中间给出“网络异常,加载数据失败”等相应的提醒文字。
在另一个实施方式中,当网络出现异常导致无法加载JSONP数据时,出错事件得到满足,从而回调该出错事件的事件处理函数。事件处理函数具体可以为在新弹出的提示窗口上触发异常提醒。比如:在新弹出的提示窗口上触发异常提醒,给出“网络异常,加载数据失败”等相应提醒文字。
实际上,根据具体应用环境和需求的不用,无论是在该脚本标签的网页上给出提醒,还是在新弹出的提示窗口上给出提醒,相应的提醒文字是可以变化和更改的。
通过上述方法,可以提高JSONP在IE9/Firefox/Chrome等高版本浏览器中的异步请求交互体验。
优选地,数据源可以为数据的统一资源定位符(URL)。
图3为根据本发明实施方式的异常提醒与现有技术中无提醒的对比图;图4为根据本发明另一实施方式的异常提醒与现有技术中无提醒的对比图。
在图3中,左边为现在技术中当网络异常时无提醒的示意图;右边为根据本发明实施方式的网络异常提醒示意图。
根据图3左右两边对比可知,在现有技术中,当发生502错误(即无法访问服务器)出现网络异常,从而导致无法加载JSONP数据时,会持续给出“正在加载...”的字样,从而用户因为无法了解真实的数据加载情况而不能做出正确的维护处理。应用了本发明实施方式之后,当发生502错误的网络异常导致无法加载JSONP数据时,会通过出错事件的回调处理,给出“网络异常,加载数据失败”的正确提醒,从而用户可以正确了解数据加载情况,提高了维护处理成功率。
类似地,在图4中,左边为现在技术中当网络异常时无提醒的示意图;右边为根据本发明实施方式的网络异常提醒示意图。
根据图4左右两边对比可知,在现有技术中,当发生404错误(即数据没有找到)出现网络异常,从而导致无法加载JSONP数据时,同样会持续给出“正在加载...”的字样,从而用户因为无法了解真实的数据加载情况而不能做出正确的维护处理;而应用了本发明实施方式之后,当发生404错误的网络异常导致无法加载JSONP数据时,会通过出错事件的回调处理,给出“网络异常,加载数据失败”的正确提醒,从而用户可以正确了解数据加载情况,提高了维护处理成功率。
基于上述详细说明,本发明实施方式还提出了一种JSONP数据请求装置。
图5为根据本发明实施方式的JSONP数据请求装置结构示意图。如图5所示,该装置包括出错事件设置单元501和事件回调单元502。
其中:出错事件设置单元501,用于在脚本标签中设置出错(onerror)事件;
事件回调单元502,用于脚本标签向数据源请求JSONP数据,并当请求所述JSONP数据出现异常时回调该出错事件以触发异常提醒。
在一个实施方式中,出错事件设置单元501,用于通过设置HTML属性的方式在所述脚本标签中设置出错事件,或通过文档对象模型DOM方式在所述脚本标签中设置出错事件。
具体地,在一个实施方式中,出错事件设置单元501可以通过设置HTML属性的方式在脚本标签中设置出错事件。
示范性地,添加方法如下:
<script type=”text/javascript”onerror=”fun()”></script>;
其中fun是事件处理函数,即出现错误时的回调方法。
在一个实施方式中,出错事件设置单元501还可以通过文档对象模型(DOM)方式在所述脚本标签中设置出错事件。
示范性地,添加方法如下:
scriptNode.addEventListener(“error”,fun,false);
其中:scriptNode表示script标签节点对象;
fun是事件处理函数,即出现错误时的回调方法。
优选地,事件回调单元502,用于当出现异常时回调该出错事件,以在该脚本标签的网页上触发异常提醒。比如:在该脚本标签的网页上的正中间给出“网络异常,加载数据失败”等相应的提醒文字。
事件回调单元502,还可以用于当出现异常时回调该出错事件,以在新弹出的提示窗口上触发异常提醒。比如:在新弹出的提示窗口上触发异常提醒,给出“网络异常,加载数据失败”等相应提醒文字。
在一个实施方式中,事件回调单元502,用于脚本标签以异步方式向数据源请求JSONP数据,或脚本标签以同步方式向数据源请求JSONP数据。
优选地,数据源为数据的统一资源定位符(URL)。
综上所述,在本发明实施方式中,首先在脚本标签中设置出错事件,然后脚本标签向数据源请求JSONP数据,并当请求所述JSONP数据出现异常时回调该出错事件以触发异常提醒。由此可见,应用本发明实施方式之后,当发生错误导致无法加载JSONP数据时,通过出错事件的回调处理,可以给出正确提醒,从而用户可以正确了解数据加载情况,提高维护处理成功率。
而且,在本发明实施方式中,直接通过出错事件的回调处理给出提醒,而无需自定义标志变量,同样还不需要判断标志变量是否存在,从而还保证了逻辑处理简洁,而且设置方式非常灵活。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种JSONP数据请求方法,其特征在于,该方法包括:
在脚本标签中设置出错事件;
脚本标签向数据源请求JSONP数据,并当请求所述JSONP数据出现异常时回调该出错事件以触发异常提醒;
所述当请求JSONP数据出现异常时回调该出错事件以触发异常提醒包括:
当网络出现异常导致无法加载JSONP数据时,出错事件得到满足,回调该出错事件,以在该脚本标签的网页上触发异常提醒;或
当网络出现异常导致无法加载JSONP数据时,出错事件得到满足,回调该出错事件,以在新弹出的提示窗口上触发异常提醒。
2.根据权利要求1所述的JSONP数据请求方法,其特征在于,所述在脚本标签中设置出错事件包括:
通过设置超文本标记语言(HTML)属性的方式在所述脚本标签中设置出错事件,或通过文档对象模型(DOM)方式在所述脚本标签中设置出错事件。
3.根据权利要求1所述的JSONP数据请求方法,其特征在于,脚本标签向数据源请求JSONP数据包括:
脚本标签以异步方式向数据源请求JSONP数据,或脚本标签以同步方式向数据源请求JSONP数据。
4.根据权利要求1所述的JSONP数据请求方法,其特征在于,所述数据源为数据的统一资源定位符(URL)。
5.一种JSONP数据请求装置,其特征在于,该装置包括出错事件设置单元和事件回调单元,其中:
出错事件设置单元,用于在脚本标签中设置出错事件;
事件回调单元,用于脚本标签向数据源请求JSONP数据,并当请求所述JSONP数据出现异常时回调该出错事件以触发异常提醒;
所述当请求JSONP数据出现异常时回调该出错事件以触发异常提醒包括:
当网络出现异常导致无法加载JSONP数据时,出错事件得到满足,回调该出错事件,以在该脚本标签的网页上触发异常提醒;或
当网络出现异常导致无法加载JSONP数据时,出错事件得到满足,回调该出错事件,以在新弹出的提示窗口上触发异常提醒。
6.根据权利要求5所述的JSONP数据请求装置,其特征在于,
所述出错事件设置单元,用于通过设置超文本标记语言(HTML)属性的方式在所述脚本标签中设置出错事件,或通过文档对象模型(DOM)方式在所述脚本标签中设置出错事件。
7.根据权利要求5所述的JSONP数据请求装置,其特征在于,
所述事件回调单元,用于脚本标签以异步方式向数据源请求JSONP数据,或脚本标签以同步方式向数据源请求JSONP数据。
8.根据权利要求5所述的JSONP数据请求装置,其特征在于,所述数据源为数据的统一资源定位符(URL)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210082200.7A CN103368980B (zh) | 2012-03-26 | 2012-03-26 | 一种jsonp数据请求方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210082200.7A CN103368980B (zh) | 2012-03-26 | 2012-03-26 | 一种jsonp数据请求方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103368980A CN103368980A (zh) | 2013-10-23 |
CN103368980B true CN103368980B (zh) | 2018-02-16 |
Family
ID=49369517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210082200.7A Active CN103368980B (zh) | 2012-03-26 | 2012-03-26 | 一种jsonp数据请求方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103368980B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681394A (zh) * | 2015-12-29 | 2016-06-15 | 深圳市瑞铭无限科技有限公司 | 基于OKHttp和GSON的网络请求方法和装置 |
CN106027619A (zh) * | 2016-05-11 | 2016-10-12 | 上海佳依佳信息科技有限公司 | 一种用于处理基于jsonp的请求的方法与设备 |
CN109862076B (zh) * | 2018-12-30 | 2022-05-03 | 贝壳技术有限公司 | 一种业务数据交互方法、装置和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000544A (zh) * | 2007-01-16 | 2007-07-18 | 华为技术有限公司 | 基于Web页面的事件分发方法与装置 |
CN101446965A (zh) * | 2008-12-31 | 2009-06-03 | 中国建设银行股份有限公司 | 一种数据查询方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100788693B1 (ko) * | 2006-01-12 | 2007-12-26 | 삼성전자주식회사 | 원격 사용자 인터페이스의 상태 정보를 저장하고 복구하는방법 및 장치 |
US8364300B2 (en) * | 2008-10-03 | 2013-01-29 | Invensys Systems, Inc. | Retrieving and navigating through manufacturing data from relational and time-series systems by abstracting the source systems into a set of named entities |
US8407238B2 (en) * | 2009-10-28 | 2013-03-26 | Yahoo! Inc. | System and methods for enabling arbitrary developer code consumption of web-based data |
CN102143122A (zh) * | 2010-01-29 | 2011-08-03 | 国际商业机器公司 | 用于对安全认证结果进行告警的方法和装置 |
CN102081661A (zh) * | 2011-01-19 | 2011-06-01 | 吉林大学 | 基于xml的异构关系型数据库的数据集成方法和系统 |
-
2012
- 2012-03-26 CN CN201210082200.7A patent/CN103368980B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000544A (zh) * | 2007-01-16 | 2007-07-18 | 华为技术有限公司 | 基于Web页面的事件分发方法与装置 |
CN101446965A (zh) * | 2008-12-31 | 2009-06-03 | 中国建设银行股份有限公司 | 一种数据查询方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103368980A (zh) | 2013-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11093700B2 (en) | Automating interrogative population of electronic forms using a real-time communication platform | |
CN109683953B (zh) | 一种基于可视化界面进行配置文件处理的方法及装置 | |
US9009784B2 (en) | Automated correction and reporting for dynamic web applications | |
CN108595304A (zh) | 网页监控方法及装置 | |
CN107562556B (zh) | 故障的恢复方法、恢复装置及存储介质 | |
CN112948035A (zh) | 微前端页面的控制方法、装置、终端设备及存储介质 | |
CN107508720B (zh) | 一种自动化测试方法及装置 | |
CN108959509A (zh) | 网页水印处理方法、装置及电子设备 | |
KR20080041634A (ko) | 클라이언트-서버 통신 개선 방법, 클라이언트-서버아키텍처 내의 서버, 클라이언트-서버 아키텍처 시스템 및컴퓨터 판독가능한 저장 매체 | |
CN110941950B (zh) | 接口文档的生成方法、装置、服务器及存储介质 | |
CN103152365A (zh) | 对数据进行验证的数据验证方法及服务器 | |
US9264507B2 (en) | Cross domain communication channel | |
CN103368980B (zh) | 一种jsonp数据请求方法和装置 | |
RU2412472C2 (ru) | Разметка сценария | |
CN110096395A (zh) | 接口联调测试方法、装置、计算机设备及存储介质 | |
CN105528369B (zh) | 网页转码方法、装置以及服务器 | |
US20140245124A1 (en) | System and method thereof for browser agnostic extension models | |
CN113641924B (zh) | 网页可交互时间点检测方法、装置、电子设备及存储介质 | |
US11630805B2 (en) | Method and device to automatically identify themes and based thereon derive path designator proxy indicia | |
CN102143122A (zh) | 用于对安全认证结果进行告警的方法和装置 | |
CN115795191A (zh) | 网页运行方法及其装置、计算机可读存储介质 | |
Fernandes et al. | Evaluating web accessibility at different processing phases | |
Freeman | Making HTTP Requests | |
CN107797930B (zh) | 测试智能卡功能的方法、系统、装置及可读存储介质 | |
CN114629955A (zh) | 一种身份认证方法、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C53 | Correction of patent for invention or patent application | ||
CB02 | Change of applicant information |
Address after: 518057 Nanshan District science and Technology Park, Guangdong, Zhejiang Province, science and technology in the Tencent Building, the first floor of the 8 layer Applicant after: Tenpay Payment Technology Co., Ltd. Address before: The South Guangdong province 518057 Shenzhen high tech Zone of Nanshan District City, a TCL building A block eight layer Applicant before: Shenzhen Tenpay Technology Co., Ltd. |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SHENZHEN TENPAY TECHNOLOGY CO., LTD. TO: TENPAY PAYMENT TECHNOLOGY CO., LTD. |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |