http://dynamic.vip.xxxxxx.com/active/<controllers>/<active>/<id>
放在浏览器地址栏中访问可以得到正确的输出,但我一放到 AJAX 中去异步请求后用 FireBug 调试时确怎么都不出结果,和水龙兄一起调试了很久都没有发现是什么问题,由于这个URL对方的程序是用XX框架写的,我是第一次使用这个XX框架进行开发,对它不是很熟(有时间要研究一下它的内核源码),总以为是它什么地方有设置影响了的;就在我快要吐血时,乐锋(对这块比较了解的哥们)终于上线了,我把问题向他说下后,他第一反应就是:”你是不是跨域访问了。。”
OH FUCK,我和水龙一直研究程序逻辑,竟然忽视了自己的当前域名,因为我当前执行请求的域名是:
http://vip.xxxxxx.com/active1/index.html
问了一下乐锋,现系统中已提供的几个方案(函数)都不太令人满意或太烦琐了,和乐锋讨论了几种方案后,一时没有找到最好解决方案,一看时间,22:00了,天色已晚,不打扰他晚上陪老婆了!回到家里本想通过利用 iframe 来加载跨域的 url 来得到 dom 数据,研究后发现的想法太天真了,JS的安全策略跟本不允许我这样做;想通过 proxy 代理的方案,但想了一下,那比现在系统中所使用的方案更麻烦,详细研究了一下jQuery最新版关于跨域的解决方案后,终于让我研究出了一种非常方便的解决方案:
如下是代码示例:
—————— http://a.com/index.html ——————-

<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript">
/*
AJAX跨域问题完美解决方案
研究:袁维
启示:乐锋
*/
function jsonCallBack(url,callback)
{
$.getScript(url,function(){
callback(json);
});
}
function fun1()
{
jsonCallBack('http://b.com/b.php',function(json){
alert(json.message);
})
}
</ script>
<button type="button" onclick="fun1()">跨域访问</button>
—————— http://b.com/b.php ——————-

<?php
$ary = array('result'=>0,'message'=>'跨域成功');
$json = json_encode($ary);
//一定要这样定义输出最后的JSON数据,这是利用JS的闭包特性
echo "var json=$json;";
?>

该方案注意事项:
1:jQuery的版本必需大于 1.2版,否则不支持跨域处理
2:只支持 GET 方式的请求
2:请求的 URL 必需按如下例子中那样返回数据.
该方案注意利弊:
优点:
1:比用 iframe 加输出 parent.XXX() 的方案简单高效明了,前端处理更方便
2:相当 proxy 方式在编程上也简单多了
缺点:
1:必需使用jQuery,
2:返回的数据格式必需按示例样,当然不限于JSON,但它是处理最方便的.
(跨域服务器支持常规”?”查询请求的解决方案,利用JQuery的JSONP)
——————— http://b.com/index ———————-

<script src="jquery-1.4.2.js" type="text/javascript"></script>
<script type="text/javascript">
function fun1()
{
$.getJSON("http://a.com/c.php?no=10&msg=ok&format=json&jsoncallback=?",
function(data){
alert(data.msg);
});
}
</script>
<button type="button" onclick="fun1()">跨域处理</button>

 
——————– http://a.com/c.php ———————-

<?php
$no = $_GET['no'];
$msg = $_GET['msg'];
$json = json_encode(array('no'=>$no,'msg'=>$msg));
//必需以下这样输出
echo $_GET['jsoncallback'].'('.$json.')';

转载的别人的ajax跨域解决方法的更多相关文章

  1. ajax 跨域解决方法

    最近在开发过程中,使用ajax去异步调取图片.在开发中这个功能没什么问题,可以后来提测,重新部署之后就有问题了,这就是ajax的跨域问题. ajax核心对象XMLHttpRequest本身是不支持跨域 ...

  2. [转]vue跨域解决方法

      vue跨域解决方法 vue项目中,前端与后台进行数据请求或者提交的时候,如果后台没有设置跨域,前端本地调试代码的时候就会报“No 'Access-Control-Allow-Origin' hea ...

  3. ajax 跨域解决 网上资料

    PHP中运用jQuery的Ajax跨域调用实现代码,需要的朋友可以参考下   可以在页面定义一个调用方法,如下: 复制代码代码如下: function getData(){ $.getJSON(&qu ...

  4. PHP Ajax跨域解决

    PHP Ajax 跨域问题最佳解决方案 本文通过设置Access-Control-Allow-Origin来实现跨域. 例如:客户端的域名是client.runoob.com,而请求的域名是serve ...

  5. AJAX跨域问题解决方法(4)——调用方解决跨域

    调用方解决跨域的方法只有一种,那就是隐藏跨域. 何为隐藏跨域? 隐藏跨域的核心思路是通过反向代理隐藏跨域以欺骗浏览器 什么是反向代理?反向代理是指通过中间服务器使得访问同一个域名的两个不同url最终会 ...

  6. JavaScript跨域解决方法大全

    跨域的定义:JavaScript出于安全性考虑,同源策略机制对跨域访问做了限制.域仅仅是通过“URL的首部”字符串进行识别,“URL的首部”指window.location.protocol +win ...

  7. ASP.NET MVC 实现AJAX跨域请求方法《1》

    ASP.NET MVC 实现AJAX跨域请求的两种方法 通常发送AJAX请求都是在本域内完成的,也就是向本域内的某个URL发送请求,完成部分页面的刷新.但有的时候需要向其它域发送AJAX请求,完成数据 ...

  8. ajax原理和跨域解决方法

    ajax是异步的 JavaScript 和 XML.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 1--启动 ...

  9. 解决ajax跨域的方法原理详解之Cors方法

    1.神马是跨域(Cross Domain)   对于端口和协议的不同,只能通过后台来解决.   一句话:同一个ip.同一个网络协议.同一个端口,三者都满足就是同一个域,否则就是 跨域问题了.而为什么开 ...

随机推荐

  1. Linux下根据进程的名字杀死进程

    以前是写了一个bash,通过ps,grep 和awk配合搜索PID再kill掉进程.果然以前傻,不知道解决问题之前先google,原来直接就有相关的pkill -f "process_nam ...

  2. PHP PDO 安装使用

    PDO(PHP Data Object) 是PHP 5新出来的东西,在PHP 6都要出来的时候,PHP 6只默认使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的 ...

  3. 护肤品总结 Skin Care (1)

    很久没有更博了,最近过年在家,就写些生活上面的总结吧- 从护肤品开始,接下来陆陆续续会有化妆品,北美生活购物等. 因为是学生党,所以此帖中的东西基本都是价钱适中.因为经常买买买,所以用的好的坏的都会在 ...

  4. 迭代导出word 文档

    Map迭代的使用: Map map = new HashMap() ; Iterator it = map.entrySet().iterator() ; while (it.hasNext()) { ...

  5. WingIDE注册破解方法

    WingIDE是Python程序语言设计的集成开发环境,具有语法标签高亮显示,命令自动完成和函数跳转列表等非常强大的功能.本文主要介绍WingIDE 5安装及注册破解方法. 1. WingIDE 5下 ...

  6. Matplotlib下载地址

    http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib

  7. 标准爬虫初探,来自Python之父的大餐!

    首先不得不承认自己做了标题党.本文实质是分析500lines or less的crawlproject,这个project的地址是https://github.com/aosabook/500line ...

  8. Netmon: A light-weight network monitor for Windows

    Netmon is a light-weight network monitor that works on Windows operating systems. It provides differ ...

  9. Ajax原生XHR对象

    前端学了有一段时间了,在项目中我通常使用的都是jQuery封装好的Ajax函数($.ajax.$.get.$.post),使用非常的简单方便,但为了更清楚的了解Ajax,需要学习原生xhr对象.   ...

  10. Java基础知识强化56:经典排序之快速排序(QuickSort)

    1. 快速排序的原理: 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其 ...