当前位置:首页 > 文章教程 > 建站教程 > 详情页

jsonp跨域:实现JS跨站请求PHP数据

分类:建站教程作者:老鱼网日期:2021年09月09日点击: 22

jsonp跨域请求是指不同的域名网站之间进行数据请求与获取。由于网站安全机制,服务器一般都是设置了防跨站请求的,如果我们想跨域请求数据,所以AJAX请求会报错,最好的方法就是使用jsonp跨域请求。

jsonp跨域

下面学做网站论坛介绍一下jsonp跨域请求数据的方法。

第一步:在JS中使用AJAX代码来发送请求,注意dataType:'jsonp'。

var kehuurl='https://www.laoyublog.com/';
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文件进行数据的读取和调用了。


相关推荐