好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP JSONP跨域实现程序详解 - php高级应用

PHP JSONP跨域实现程序详解

在网站开发中跨域是一个头痛的事情,我经常要需要解决各种跨域问题,今天我来介绍在php中利用JSONP跨域实现方法,各位J友可参考参考,先看一个实例,代码如下:

$( "#btn" ).click( function (k) {        //...         var  j = form.serializeArray(); //序列化name/value        $.ajax({           url:  "另一个域名/test.php" ,           dataType:  'jsonp' ,           data: j,           jsonp:  'jsonp_callback' ,           success:  function (json) {  //返回的json数据               json = json || {};                if  (json.msg== 'err' ){                   alert(json.info);               } else   if  (json.msg== "ok" ){                   alert( '提交成功' );               } else {                   alert( '提交失败' );               }           },           timeout: 3000       })        //...    }); 

php部分代码如下:

$jsonp_callback = $_GET [ 'jsonp_callback' ];   //...    //如果正确    echo   $jsonp_callback , '({"msg":"ok"})' ;   //如果错误    echo   $jsonp_callback , '({"msg":"err","info":"因人品问题,发送失败"})' ;   //...值得注意的是采用jsonp 方式,beforeSend / error 都不能用了,所以beforeSend里面用js实现的验证只能用ajax在服务器端test.php上面验证了。  

域名下面有这么个html文件testjsonp.html,代码如下:

<!DOCTYPE html PUBLIC [- //W3C//DTD XHTML 1.0 Transitional//EN[ [http://HdhCmsTestw3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[>    <html xmlns=[http: //HdhCmsTestw3.org/1999/xhtml[ >    <head>       <title>Untitled Page</title>        <script type=[text/javascript[ src=[jquery-1.7.2.min.js[></script>        <script type=[text/javascript[>       jQuery(document).ready( function (){           $.ajax({               type: [GET[,               async: false,                //url: [http://test/jsonp.php[,                url:[http: //mytaobao测试数据/jsonp.php[,                dataType: [jsonp[,               jsonp: [callback[, //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)                jsonpCallback:[flightHandler[, //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写[?[,jQuery会自动为你处理数据                success:  function (json){                   alert( '您查询到航班信息:票价: '  + json.price +  ' 元,余票: '  + json.tickets +  ' 张。回调函数名为: ' +json.func);               },               error:  function (){                   alert([fail[);               }           });       });       </script>       </head>    <body>    </body>   </html> 

注意,要真正运行上面的代码可能需要jquery的文件,你可以将如下代码:

<script type=[text/javascript[ src=[jquery-1.7.2.min.js[></script> 

改为你目录中jquery的文件路径,代码如下:

<script type=[text/javascript[ src=[js/jquery.js[></script>

然后,你可以再找个另外一个域名的web目录,将文件jsonp.php:如下代码:

<?php  $callback  =  $_GET [[callback[];  $a  =  array (    'code' => 'CA1998' ,       'price' => '6000' ,       'tickets' =>20,       'func' => $callback ,  );  $result  = json_encode( $a );  echo  [flightHandler( $result )[;  exit ;  

放到这个目录下面去,这样就可以测试了,直接在浏览器访问testjsonp.html.就可以看到效果了.

查看更多关于PHP JSONP跨域实现程序详解 - php高级应用的详细内容...

  阅读:41次