PHP中运用jQuery的Ajax跨域调用实现代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中运用jQuery的Ajax跨域调用实现代码相关的知识,希望对你有一定的参考价值。

参考技术A 可以在页面定义一个调用方法,如下:
复制代码
代码如下:
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).")";

?>
成功调用后,画面就能获取到返回的json数据了。

jquery+thinkphp实现跨域抓取数据的方法

jquery的$.post发送数据到服务器后台,在由后台的PHP代码执行远程抓取,存到数据库ajax返回数据到前台,前台用JS接受数据并显示。

//远程抓取获取数据
$("#update_ac").click(function() {
$username = $("#username").text();
$("#AC,#rank,#Submit,#solved,#solved2,#solved3").ajaxStart(function(){
$(this).html("<span class=‘loading2‘>   </span>");
});
$.post("update_ac/username/"+$username,{},function($data){
json = eval("(" + $data + ")");
$("#Submit").html(json.data.Submit);
$("#AC").html(json.data.AC);
$("#solved,#solved2,#solved3").html(json.data.solved);
$("#rank").html(json.data.rank);
}
),"json";
});

上面的jquery代码还算四楼比较清楚的,纠结我的就是那个json数据的接收

json = eval("(" + $data + ")");
//eval() 函数可计算某个字符串,并执行其中的的 javascript 代码。

其实这个都还是前台,跨域抓取是用php的扩展simple_html_dom完成的(不清楚的可以到网上去搜一搜,基于PHP5开发的)

把远程的页面抓取到本地。

import("@.ORG.simple_html_dom");
//thinkphp内导入扩展,你要把网上下载的代码改名为simple_html_dom.class.php放到APPNAME\Lib\ORG的目录下面
$html = file_get_html(‘http://openoj.awaysoft.com/JudgeOnline/userinfo.php?user=‘.$username); //远程抓取了
$ret = $html->find(‘center‘,0)->plaintext; //返回数据了。

如下所示:

<strong><span style="font-size:18px;">/*编号=年份后两位+月份+id四位数*/ 

$id = $this->student_model->save(0, $data); 
$sn = date(‘Y‘, time()); 
$sn = substr($sn, -2); 
$sn.= date(‘m‘, time()); 
$sn.=sprintf("%04d", $id);</span></strong> 

























以上是关于PHP中运用jQuery的Ajax跨域调用实现代码的主要内容,如果未能解决你的问题,请参考以下文章

Ajax 跨域和同源策略的解释和使用,使用jQuery跨域,模板引擎artTemplate的使用详细解释+案例

PHP、jQuery Ajax 和 json 跨域返回

AJAX的一个简单实例,跨域的解决,使用JQuery来进行ajax的调用

jQuery:跨域 AJAX 调用导致“访问受限 URI 被拒绝”(代码 1012)

处理跨域 jsonp 调用的 jQuery.ajax 错误

jQuery跨域ajax:执行时回调