jsonp跨域:实现JS跨站请求PHP数据
jsonp跨域请求是指不同的域名网站之间进行数据请求与获取。由于网站安全机制,服务器一般都是设置了防跨站请求的,如果我们想跨域请求数据,所以AJAX请求会报错,最好的方法就是使用jsonp跨域请求。
下面学做网站论坛介绍一下jsonp跨域请求数据的方法。
第一步:在JS代码中使用AJAX代码来发送请求,注意dataType:'jsonp'。
var kehuurl='https://www.xuewangzhan.net/';
window.onload = function(){
$.ajax({
url:"dengluchuli.php?kehuurl="+kehuurl,
dataType:'jsonp',
success:function(result) { //成功的回调函数
if(!result){//回调函数里的参数是对象,可以取值,也可以判断
window.parent.parent.location.href="banquan/?furl="+kehuurl;
}
}
});
}
第二步:在处理数据的PHP文件dengluchuli.php中进行数据的处理,PHP处理后的数据,最终是一个对象;
最简单的数据方式:
<?php
exit($_GET['callback'].'({1: 张三,2: 李四})');
?>
如果想PHP读取数据库后,然后再获取数据,可以像下面这样写:
<?php
//获取参数
$kehuurl = $_GET["kehuurl"];
//连接数据库
define("DB_HOST","localhost");
define("DB_USER","admin");
define("DB_PWD","8prML");
define("DB_NAME","a564564");
$conn = @mysql_connect(DB_HOST,DB_USER,DB_PWD) or die("连接服务器出错:".mysql_error());
@mysql_select_db(DB_NAME) or die("连接数据库出错:".mysql_error());
@mysql_query('SET NAMES UTF8');
//从数据表中获取自己需要的数据
$result = mysql_query("select domain from wp_banquan where domain = '$kehuurl'");
if($result) {
//转成数组,且返回第一条数据,当不是一个对象时候退出
while($row = mysql_fetch_array($result))
{
$arr[] = $row['domain'];
}
//将数组转成PHP对象,就可以把数据库里的数据读取成对象了
exit($_GET['callback'].'('.json_encode($arr, JSON_FORCE_OBJECT).')');
}
else{
exit($_GET['callback'].'({0: null})');
}
mysql_close($conn);// 关闭数据库
?>
这样通过上面一个JS文件和PHP文件,就可以实现jsonp跨域请求,这样JS就可以访问PHP文件进行数据的读取和调用了。