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. InputStream和Reader区别

    InputStream,OutputStream  前者为字节输入流,后者为字节输出流.Reader   Writer  前者为字符输入流,后者为字符输出流. 四个均为抽象类.fileInputStr ...

  2. c#复习阶段

    在控制台程序中使用结构体.集合,完成下列要求项目要求:一.连续输入5个学生的信息,每个学生都有以下4个内容:1.序号 - 根据输入的顺序自动生成,不需要手动填写,如输入第一个学生的序号是1,第二个是2 ...

  3. linux 强大的编辑器之vi

    vi编辑器是一个处理ASCII数据的文本工具.大多数linux发行版都已经默认安装了vi编辑器.vi是visual interface的缩写vim是 visual interface improved ...

  4. 用Maonry如何实现UIScrollView

    一,使用UIScrollView 与其他View 布局不同的地方在于, ScrollView的高度/宽度不固定: ScrollView的高度和宽度由其内容决定(即 Scroll View 的 cont ...

  5. DEV界面皮肤

    1.添加一个 2.添加引用: 3.添加一个SkinTools类 public class SkinTools { /// <summary> /// 在Program中调用 /// < ...

  6. ubuntu下chromium 安装flash player

    原文地址 :http://blog.sina.com.cn/s/blog_858820890102v63w.html 不记得从什么时候起,Chromium 不再支持 Netscape plugin A ...

  7. Creating Dynamic LOV in Oracle D2k Forms

    Dynamic Lov is a good idea for the form where too many Lov requirement is there with different recor ...

  8. java运行期类型鉴定

    运行期类型识别?RTTI? 假如我们有一个基类的引用,这个引用也可以作为子类的引用嘛,现在我们想知道这个引用的类型到底是啥? 当从子类到基类之后有很多的信息都会丢失掉,比如有一个人类的对象可以看成普遍 ...

  9. CSharp Similarities and Differences

    This document lists some basic differences between Nemerle and C# in a terse form. If you know Java ...

  10. 细说 Request[]与Request.Params[]

    http://www.cnblogs.com/fish-li/archive/2011/12/06/2278463.html