Jsonp post 跨域方案

 更新时间:2015年07月06日 10:59:52   投稿:hebedich  
本文给大家讲述的是个人在一个项目中遇到的关于jsonp的post跨域问题的解决过程,这里记录下来,分项给大家。

近期在项目中遇到这样一问题,关于jsonp跨域问题,get传值是可以的,但post传值死活不行啊,于是网上看了一大堆关于这方面的资料,最终问题得以解决,今天抽空与大家分享下。

说明:
http://www.t1.com/index.php 服务端URL
当然这是我本地配置的,需要改为自己对应的地址。

客户端代码:

<script>
  $(function(){
     
    var url = 'http://www.t1.com/index.php';
    $.ajax({
      type:      'post',
      url:      url,
      data:      {name:'wangyulu'},
      dataType:    'jsonp',
      success:function(result){
        console.log(result);
      }
    });
     
  });
 </script>

服务端代码:

 
<?php
if($_POST){
  $arr = array('name'=>$_POST['name'], 'age'=>23);
  echo json_encode($arr);
}

浏览器运行如下图:

看下运行结果,即使设置传送方式为 post,Jquery也会自动转为 get,难道Jsonp真的不支持 post 方式提交吗,继续折腾...

折腾到现在最终在 stackoverflow 里找到一些关于这方面的资料,看来老外也遇到这样问题呀,地址贴给大家
http://stackoverflow.com/questions/3860111/how-to-make-a-jsonp-post-request-that-specifies-contenttype-with-jquery

关键点如下图:

看上图我们发现,箭头标记处有变化,先不管这么多了,折腾这么久了,先对应放到程序里再说嘛,万一可以呢

客户端更改:
添加:crossDomain: true
修改:dataType: "json"

服务端添加:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Max-Age: 1000');

运行结果如下图:

到这里我们发现问题终于解决了,但我们详细观察发现,请求时间那是个漫长啊,,,看来老外也没个效率高的解决方案,

最后,我想说的是,要想完美支持POST方式的JSONP真心不好办啊,咱就到这吧,折腾不少时间了。

以上内容可能会关联到其它技术点,有兴趣自己可去研究哈,这里主要解决 Jsonp ,写的不好,大家请勿吐槽,谢谢!

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

  • JavaScript反转数组常用的4种方法

    JavaScript反转数组常用的4种方法

    这篇文章主要给大家介绍了关于JavaScript反转数组常用的4种方法,反转数组可以将数组中的元素顺序颠倒过来,从而达到一些特定的需求,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • js正则格式化日期时间自动补0的两种解法

    js正则格式化日期时间自动补0的两种解法

    在javascript开发中,我们会遇到日期时间格式化的问题,下面这篇文章主要给大家介绍了关于js正则格式化日期时间自动补0的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-10-10
  • xml和web特殊字符

    xml和web特殊字符

    在html和xml文件中,往往会因为以下特殊字符而导致文件解析出错,一般通过以下函数来处理。
    2009-04-04
  • javascript调试过程中找不到哪里出错的可能原因

    javascript调试过程中找不到哪里出错的可能原因

    本文为大家讲解下在写javascript时找不到哪里出错的可能原因,遇到的朋友可以参考下
    2013-12-12
  • 如何在一段文字里点一下就可以在里面插入一段文字?

    如何在一段文字里点一下就可以在里面插入一段文字?

    如何在一段文字里点一下就可以在里面插入一段文字?...
    2007-01-01
  • html向js方法传递参数具体实现

    html向js方法传递参数具体实现

    html如何向js方法传递参数,在本文将为大家详细介绍下html注册事件向引用方法中的传参问题,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-08-08
  • 纯JS实现轮播图

    纯JS实现轮播图

    这几天一直在看js动画,今天又get到了一个轮播图,使用纯js实现的,但是外观样式不是很好看,如果大家有需要可以美化下,具体实现代码还是很完整的,大家可以参考下
    2017-02-02
  • 纯js实现背景图片切换效果代码

    纯js实现背景图片切换效果代码

    现在纯粹用js的人越来越少了,更多的人喜欢jquery,可使我还是喜欢javascript,下面给出一个用javascript写的背景切换的小例子,各位大虾不要骂,只是写给自己看的,也供js事件的产考依据。
    2010-11-11
  • JavaScript网格中的最小路径讲解

    JavaScript网格中的最小路径讲解

    这篇文章主要介绍了JavaScript网格中的最小路径讲解,所有路径经过的单元格的 值之和 加上 所有移动的 代价之和 。从 第一行 任意单元格出发,返回到达 最后一行 任意单元格的最小路径代价
    2022-06-06
  • js 为label标签和div标签赋值的方法

    js 为label标签和div标签赋值的方法

    这篇文章介绍了js 为label标签和div标签赋值的方法,有需要的朋友可以参考一下
    2013-08-08

最新评论