MySQL 查询不能与 Ajax 中的跨域一起使用



我的问题是以下...我制作了一些PHP代码,该代码从MySQL数据库中读取记录:

$host = $_SESSION['host'];
$username = $_SESSION['username'];
$password = $_SESSION['password'];
$db = $_SESSION['db'];
$con = mysqli_connect($host,$username,$password,$db);
$sql = "SELECT * FROM `table`";
$result = $con->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
         ...
    }
}

我的html:

<button onclick="list">submit</button>
<div id="output"></div>
<script>
var thisHost = "host.php";
function list() {
    $.ajax({
        type: 'POST',
        url: thisHost,
        data: "list=true",
        success: function(data) 
        {
            $("#output").html(data);
        },
        error: function (responseData, textStatus, errorThrown) 
        {
            console.warn(responseData, textStatus, errorThrown);
        }
    });
}
</script>

至于一切正常。但是,现在我想从另一个主机调用PHP代码。因此,HTML文件在另一个主机上(Localhost:81),PHP文件停留在旧主机上(Localhost:80)。

现在,我注意到我需要一些东西来跨越域,因为Ajax似乎与其他主机无法使用。因此,我所做的就是从头开始将这些行添加到PHP代码中:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type');

并将JavaScript中Thishost VAR的值更改为

"http://localhost:80/host.php"

之后,Ajax部分再次起作用和PHP响应。但是,每次我想通过这样的事情进行查询:

$sql = "SELECT * FROM `table`";

我会得到这个错误:

致命错误:未接收错误:呼叫null上的成员函数query() 在c: path to host.php中:71堆栈跟踪:#0 {main}扔进 C: path to host.php在第71行

我很确定查询正确。那么我需要更改?

在无效的手柄上调用方法将产生这样的错误。始终检查您的连接请求是否成功并处理可能发生的任何错误。

打开mysqli例外使这些事情变得更加难以忽略。

相关内容

  • 没有找到相关文章

最新更新