PHP中运用jQuery的Ajax跨域调用实现代码,需要的朋友可以参考下
 
可以在页面定义一个调用方法,如下:

复制代码代码如下:
function getData(){ 
$.getJSON("http://123.123.123.123/?callback=?", 

"m":"data",// 指定php的文件名字 
"act":"getdata",// 指定php文件中的方法 
"name":"问题儿童"// 传入的参数 
}, 
function(data) { 
// 获得返回值 

}); 

对应链接下(123.123.123.123)的PHP文件,一般默认先调用index.php文件,通过index.php文件内的方法处理后,转到对应的php文件,并且找到对应的方法,执行之。 
index.php代码如下:

复制代码代码如下:
<?php 
/** 
* 入口文件 
*/ 
$string = $_SERVER["REQUEST_URI"];// 获取访问的url 
$m = get_m($string); 
$file_path = "app/".$m.".php"; 
define('IS_INDEX',true);// 阻止直接访问app目录 
require ($file_path); 
/** 

* 获取访问php文件 
* @param string $url 
*/ 
function get_m($url){ 
$strings = explode('m=', $url); 
$res = explode("&", $strings[1]); 
return empty($res[0])?'index':$res[0]; 

?> 

data.php代码如下:

复制代码代码如下:
<?php 
/** 
* data文件 
*/ 
$act = !empty($_GET['act']) ? $_GET['act'] : ''; 
if ($act == 'getdata') 

$name = "我的名字叫:".$_REQUEST['name']; 
echo $_REQUEST["callback"]."(".json_encode($name).")"; 

?> 
 
 
 
*****************************************************************************

tml 代码清单:

  1. <script type="text/javascript" src="http://www.youxiaju.com/js/jquery-1.4.2.min.js"></script>
  2. <script type="text/javascript">
  3. $(function(){
  4. $.ajax(
  5. {
  6. type:'get',
  7. url : 'http://www.youxiaju.com/validate.php?loginuser=lee&loginpass=123456',
  8. dataType : 'jsonp',
  9. jsonp:"jsoncallback",
  10. success  : function(data) {
  11. alert("用户名:"+ data.user +" 密码:"+ data.pass);
  12. },
  13. error : function() {
  14. alert('fail');
  15. }
  16. }
  17. );
  18. })
  19. </script>

服务端 validate.php 代码清单:

  1. <?php
  2. header('Content-Type:text/html;Charset=utf-8');
  3. $arr = array(
  4. "user" => $_GET['loginuser'],
  5. "pass" => $_GET['loginpass'],
  6. "name" => 'response'
  7. );
  8. echo $_GET['jsoncallback'] . "(".json_encode($arr).")";

效果图:

********************************************************

之前一篇博客详细的说明了jsonp协议,jquery ajax封装了jsonp协议,让跨域请求实现如此简单:

  1. $.ajax({
  2. type : "post",
  3. url : "http://www.phpddt.com/ajax/test",
  4. dataType : "jsonp",
  5. jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
  6. jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
  7. success : function(json){
  8. alert('success');
  9. },
  10. error:function(){
  11. alert('fail');
  12. }
  13. });

服务器端处理如下:

  1. $data = .......
  2. $callback = $_GET['callback'];
  3. echo $callback.'('.json_encode($data).')';
  4. exit;

当使用jsonp时,使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

******************************************

一个没那么难的历史难题,其实只要在被请求端,加一句:

header('Access-Control-Allow-Origin: *');

然后……然后没有了。

******************************

示例one

javascript客户端代码:
         $.getJSON("http://www.xxx.com/***.php?callback=?",{
                 info: info,
                 format: "json"
              },
              function(data) {
                  alert(data);
              }
         );
-------------------------------------------------------------------------------------------------

php服务端代码:
$callback = isset($_GET["callback"]) ? $_GET["callback"]:"callback";
$getstr = isset($_GET["ajaxstr1"]) ? $_GET["ajaxstr1"] : "";
$data = array('type'=>1);
echo $_GET['callback'].'('.json_encode($data).')';
exit;
=============================================================================================  

示例two

javascript客户端:
$.ajax({   
         type: "Get",  
         url: "http://www.baidu.com/?UserId=1001",  
         cache: false, 
         error: function () { },   
         jsonp: "callback",   
         dataType: "jsonp",
         success: function (result) { 
            alert(result.info);   
         } 
   }); 

---------------------------------------------------------------------------------------------

php服务器端:
$classid=$_GET['classid'];
$num=$_GET['num'];
if($classid&&$num){
$results = array("key" => "value"); 
     echo $_GET['callback'] . '(' . json_encode($results) . ')'; 
}
但是目前鉴于ie浏览前支持P3P协议(W3C标准的安全协议),而firefox和chrome还不支持,所以在本地搭建环境做测试的时候会发现ie下无法实现跨域调用session去验证数据,只要在php文件头部添加下面的代码即可。
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"')

ajax 跨域解决 网上资料的更多相关文章

  1. ajax 跨域解决方法

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

  2. 转载的别人的ajax跨域解决方法

    http://dynamic.vip.xxxxxx.com/active/<controllers>/<active>/<id> 放在浏览器地址栏中访问可以得到正确 ...

  3. PHP Ajax跨域解决

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

  4. jquery ajax跨域解决

    双十一开发了一个抽奖API,最近上线了,各个事业部的大神们需要前台页面,异步调用我的抽奖API,要我提供js. js 提供之后发现不对,跨域了.之前也碰到过跨域的问题,研究过这个问题,三种方法解决. ...

  5. ajax跨域解决办法

    在使用jquery的ajax作请求时,http://127.0.0.1:8080,类似这样的一个本地请求,会产生跨域问题, 解决办法一: jsonp: var url= "http://12 ...

  6. Ajax跨域解决实例

    HTML 在本例中我们跨域http://www.sucaihuo.com/jquery/demo/43/jsonp.php?callback=.你也可以试试其他域名.下面表单中,我们提交后的结果反馈到 ...

  7. ajax跨域解决

    https://blog.csdn.net/csdn_ds/article/details/73691134 Access-Control-Allow-Origin 跨域设置多域名:http://ww ...

  8. HBuilder开发app ajax跨域 解决XMLHttpRequest

    <div id="a1" onclick="testXHR()" style="font-size: 5em;">sss1< ...

  9. Ajax 跨域,这应该是最全的解决方案了

    https://segmentfault.com/a/1190000012469713 前言 从刚接触前端开发起,跨域这个词就一直以很高的频率在身边重复出现,一直到现在,已经调试过N个跨域相关的问题了 ...

随机推荐

  1. 【Java】List集合按数量分组

    有时候,我们需要将大的集合按指定的数量分割成若干个小集合.(比如:集合作为SQL中IN的参数,而SQL又有长度限制,所以需要分批分几次进行查询) 虽然此需求感觉不常见,但偶也写过几次类似的方法,故记录 ...

  2. sql server 向oracle导入表

    选择相应的数据库,右键,任务,选择导出数据 点击下一步 选择Microsoft OLE DB Provider for Sql Server 选择下一步 目标选择.net Framework data ...

  3. C++实现链式栈,运用模板,界面友好,操作方便,运行流畅

    //.h文件 #ifndef STACK_H #define STACK_H #include<iostream> #include<iomanip> using namesp ...

  4. Python 正则表达式指南 zz

    zz http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一 ...

  5. 【转载】Linux的进程间通信-信号量

    原文:Linux的进程间通信-信号量 Linux的进程间通信-信号量 版权声明: 本文章内容在非商业使用前提下可无需授权任意转载.发布. 转载.发布请务必注明作者和其微博.微信公众号地址,以便读者询问 ...

  6. php文本里 php和html代码谁先执行谁啊

    php文本里 php和html代码谁先执行谁啊 比如php里包含一个html文本,然后html代码里又包含了一个php文本,是按照谁先包含谁被服务器执行吗,即先执行php ,再执行里面的html,然后 ...

  7. TreeList的使用

    添加列 TreeListColumn column = treeList1.Columns.Add(); column.Caption = @"建筑列表"; column.Visi ...

  8. Linux链接库三(C跟C++之间动态库的相互调用)

    http://www.cppblog.com/wolf/articles/74928.html http://www.cppblog.com/wolf/articles/77828.html http ...

  9. Timeout expired超时时间已到. 达到了最大池大小 错误及Max Pool Size设置

    此文章非原创,仅为分享.学习!!! 参考数据库链接串: <add key="data" value="server=192.168.1.123; port=3306 ...

  10. Logical Databases逻辑数据库

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...