学做网站培训课程介绍

当前位置:

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

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

// 连接到MySQL服务器
$conn = new mysqli("localhost","sql_tengxunma","669sdwe6LdsAE","sql_tengxunma");
mysqli_set_charset($conn,'UTF8');
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

// 定义要执行的SQL语句
$sql = "SELECT domain FROM wp_banquan WHERE domain = ?";

// 创建并绑定参数,防止SQL注入
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $_GET["userwz"]); // 's'表示字符串类型的参数

// 执行查询
$stmt->execute();

// 获取结果集
$result = $stmt->get_result();

if ($result) {
while ($row = $result->fetch_assoc()) {
$arr[] = $row['domain'];
}
exit($_GET['callback'] . '('.json_encode($arr, JSON_FORCE_OBJECT).')');
} else {
exit($_GET['callback'] . '({0: null})');
}

// 关闭连接
$stmt->close();
$conn->close();

?>

这样通过上面一个JS文件和PHP文件,就可以实现jsonp跨域请求,这样JS就可以访问PHP文件进行数据的读取和调用了。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注