加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

jsonp跨域

发布时间:2020-12-16 19:42:47 所属栏目:百科 来源:网络整理
导读:Query jsonp跨域原理 实际上jQuery是实现不了跨域加载数据的,由于XMLHttpRequest的安全设置,是不允许直接跨域的。jQuery的jsonp虽然能跨域,但是还得请求的页面支持才行,如果请求的页面不理会jQuery发送的参数,是无法跨域的,实际上来说是获取不到输出的

Query jsonp跨域原理

实际上jQuery是实现不了跨域加载数据的,由于XMLHttpRequest的安全设置,是不允许直接跨域的。jQuery的jsonp虽然能跨域,但是还得请求的页面支持才行,如果请求的页面不理会jQuery发送的参数,是无法跨域的,实际上来说是获取不到输出的页面内容。

  jQuery jsonp跨域原理实际就是使用script标签加载配置对象中的跨域url(<script>标签的src属性不存在跨域的问题),再使用script标签加载之前,会在客户端中注册一个新的函数作为回调函数提供给跨域页面使用,然后将函数名称替换掉url中jsoncallback=?后面的问号,最后请求的页面获取发送的回调函数名称,输出类似“回调函数名称(json数据)”的JavaScript代码来执行回调函数,参数为json数据。和代理意义差不多,jsonp需要代理页面输出执行回调函数的js代码。

  通过jQuery的跨域原来我们知道,如果跨域页面不理会回调函数,不执行它,那么就无法获取到跨域页面输出的json函数,甚至可能会出现脚本错误,因为是使用script来加载跨域页面。


实例:

前端页面:

  1. <scripttype="text/javascript"src="js/jquery.js"></script>
  2. <scripttype="text/javascript">
  3. functiondo_jsonp(){
  4. $.getJSON("http://192.168.0.110:8080/zjres/test.jsp?callback=?",//调用JSONP数据来源
  5. function(json){
  6. alert(json.length);
  7. $('#result').val('Mynameis:'+json[0].name);
  8. });
  9. }
  10. </script>
  11. </head>
  12. <body>
  13. <ahref="javascript:do_jsonp();">Clickme</a><br/>
  14. <textareaid="result"cols="50"rows="3"></textarea>
  15. </body>
  16. </html>


Test.jsp 页面
生成json对象
Java代码
    <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
  1. <%Stringcallback=request.getParameter("callback");%>
  2. <%out.print(callback+"([{name:"testJohn"},{name:"testJohn1"}])");%>


附1:jquery getJson官方api: http://api.jquery.com/jQuery.getJSON/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读