zoukankan      html  css  js  c++  java
  • 何为jsonP

         今天公司开会刚好看到冯经理给我们演示的jq的时候,偶尔瞥到公司项目中也有用到jsonP技术来解决跨域请求的问题,一时兴趣大增,幸好之前有过研究,这次就做一次简单的复习吧。刚好今天发现EF不同版本之间还是有许多的不一致的地方,导致今天在用vs2012+mvc4+EF进行项目框架搭建的时候,老是找不到之前在vs2010中常用的方法类库,因此重装vs2010,这是一个漫长的过程,够我写一下jsonP的技术要点了~~~

        JsonP是一个非官方的“协议”。主要用来跨域访问数据,使用的是服务器获得浏览器上的某个JS方法名称,并准备好Json数据,构造出一个调用js方法的js语法字符串。返回给浏览器。返回的数据因为是放在<script>标签里面,所以会被浏览器当做js代码来执行。这就达到了不同域名之间的跨域访问,

    1:JsonP的用法一:

    ajax异步对象只能访问本网站的资源,不能访问外部网站资源。例如:百度的网站创建的异步对象不能访问谷歌的相关资源。解决的方案:利用js的跨域性来解决:

          <script src="http://www.google.com.cn/GetData.ashx"></script>;

    而script标签就是一段js代码。当被请求的网站的资源被当做字符串返回给当前网站,在当前网站的都被当做js代码执行,那么在当前页面的js里面访问的到了。这就是JsonP技术。

         1.1:在被请求的网站必须提供一个变量,如:context.Response.Write("var data="+jsonP);//jsonP表示你要请求的另一个服务器的上的数据以json的形式返回。

         1.2:在当前页面可以通过:alert(var data )即可获得这个json数据。

    2:JsonP的用方法二:

          2.1:浏览器中js中有一个方法:function showHi(){alert("dd")};并通过URL传参的方式将方法名传递给服务端。

          2.2:在服务端通过:string funName=context.Response.QuerySring["方法名"]获得js中的方法名,再返回回去:context.Write(funName +"("+jsonP+")");//相当于执行:showHi(jsonP);

     图解如下:

  • 相关阅读:
    python提供的网络接口API和Linux Socket API间的关系探究 liushu
    业务领域建模Domain Modeling liushu
    分析一套源代码的代码规范和风格并讨论如何改进优化代码 liushu
    案例分析:设计模式与代码的结构特性 liushu
    如何提高程序员的键盘使用效率 liushu
    网络相关的命令工具研究报告 liushu
    用例建模Use Case Modeling liushu
    WdatePicker日历控件使用方法
    添加Web服务引用,服务引用,WCF服务开发
    JS大总结
  • 原文地址:https://www.cnblogs.com/ghhlyy/p/2760889.html
Copyright © 2011-2022 走看看