Javascript jQuery$.ajax方法在PHP中失败

Javascript jQuery$.ajax方法在PHP中失败,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我试图创建一个简单的应用程序,用PHP和jQuery显示MySQL数据库中的数据。但是我坚持通过jQuery获取数据。我的PHP脚本返回数据,没有问题。我在控制台中没有收到任何数据(来自console.log(datajson);) 请帮忙。。。我找不到任何有效的解决办法。我在谷歌搜索了至少3-4个小时/ 我的PHP脚本: <?php header('Content-Type: application/json'); $servername = "localhost"; $username

我试图创建一个简单的应用程序,用PHP和jQuery显示MySQL数据库中的数据。但是我坚持通过jQuery获取数据。我的PHP脚本返回数据,没有问题。我在控制台中没有收到任何数据(来自
console.log(datajson);

请帮忙。。。我找不到任何有效的解决办法。我在谷歌搜索了至少3-4个小时/

我的PHP脚本:

<?php
header('Content-Type: application/json');
$servername = "localhost";
$username   = "username";
$password   = "pasword";
$dbname     = "dbname";

//Open connection to MySQL DataBase
$conn = mysqli_connect($servername, $username, $password, $dbname) or die("Error: " . mysqli_error($connection));

//Fetch table rows from MySQL DataBase
$sql = "SELECT * FROM /table-name/";
$dbresult = mysqli_query($conn, $sql) or die("Error in Selecting: " . mysqli_error($conn));

//Create an array
$dataarray[] = array();
while ($row = mysqli_fetch_assoc($dbresult)) {
    $dataarray[] = $row;
}
echo json_encode($dataarray);

//Close the DataBase connection
mysqli_close($conn);

?>
php的工作链接是


JSBin处的代码示例->

您的JavaScript需要JSONP:

但是您的PHP正在发送JSON:

JSON不是JSONP,所以它会出错


告诉JavaScript使用JSON,或者重写服务器端代码以输出JSONP。

您必须返回有效的JSONP

echo 'callback(' . json_encode($dataarray) . ')';
然后将ajax函数更改为

$.ajax({
    url           : "http://kynchev.eu/database/db.php",
    dataType      : "jsonp",
    jsonpCallback : 'callback'
}).done(function (data) {
    console.log(data);
});

由于跨域JSONP请求不能同步,我看到两个问题:

  • 如果您正在从
    localhost
    工作并试图访问远程主机(例如
    http://kynchev.eu/database/db.php
    )您需要类似于
    标题('Access-Control-Allow-Origin:')
    但这确实不安全,因为星号
    *
    是一个通配符,可能来自任何远程主机。我建议只将受信任域放入
    访问控制允许来源

  • 您正在尝试同步使用
    ajax
    。这在某种程度上是可能的。按照现在的方式,
    返回json
    将始终返回
    null
    ,因为
    $的
    success
    回调。在函数到达
    return json之前,ajax
    方法不会运行


  • 你可以添加你的js代码吗。谢谢。“jQuery$.ajax方法失败”为什么失败?失败是因为ajax请求中的数据为空。首先,ajax应该是异步的,URL与您的页面是同一个域吗?不,它是跨域ajax请求!现在我有了来自PHP的JSONP,但是jquery无法访问console.log(数据);谢谢完成了。我在你的脚本代码中发现了两个错误。第一个是
    ).done
    ->
    >).done
    和第二个
    jsonp
    ->
    jsonpCallback
    header('Content-Type: application/json');
    echo json_encode($dataarray);
    
    echo 'callback(' . json_encode($dataarray) . ')';
    
    $.ajax({
        url           : "http://kynchev.eu/database/db.php",
        dataType      : "jsonp",
        jsonpCallback : 'callback'
    }).done(function (data) {
        console.log(data);
    });