Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax没有';不显示PHP数据_Javascript_Php_Html_Mysql_Ajax - Fatal编程技术网

Javascript Ajax没有';不显示PHP数据

Javascript Ajax没有';不显示PHP数据,javascript,php,html,mysql,ajax,Javascript,Php,Html,Mysql,Ajax,我这里有点麻烦。我尝试使用ajax从PHP服务器获取数据,它从Mysql数据库获取数据;然后显示到特定的html标记位置。但是,由于某些原因,没有任何东西可以向html展示。我测试了PHP页面,它工作正常。关键是,当ajax应该获取数据并显示时,数据库中似乎什么都没有 这是我的html目标: <div class="container"> <table> <thead>

我这里有点麻烦。我尝试使用ajax从PHP服务器获取数据,它从Mysql数据库获取数据;然后显示到特定的html标记位置。但是,由于某些原因,没有任何东西可以向html展示。我测试了PHP页面,它工作正常。关键是,当ajax应该获取数据并显示时,数据库中似乎什么都没有

这是我的html目标:

<div class="container">

        <table>
                <thead>
                    <tr>
                        <th>Título</th>
                        <th>Curiosidade</th>

                    </tr>
                </thead>

                <tbody>

                </tbody>
            </table>
</div>  
这是我的PHP文件:

   <?php

        require("bdconn.php");
        $pdo = new db();

        $pdo->mysql->beginTransaction();

        $rs = $pdo->mysql->query("select * from timeline");
        $rs->execute();

        while($row = $rs->fetch()){
        ?>
        <tr>
        <td><?php echo $row['titulocuriosidade']?></td>
        <td><?php echo $row['curiosidade']?></td>
        </tr>
        <?php
                  }

   ?>

有什么建议吗


提前感谢

如果php响应没有标题上的数据类型,ajax响应可能会发送错误

尝试在ajax请求上设置
dataType=“text html”
,这将尝试将响应从文本转换为html

还可以尝试在控制台上打印错误,以显示出哪里出了问题

error: function(xhr,desc,err){
    console.log(desc);
}

请参阅上的数据类型:

发生的事情是:当您进行ajax调用时,必须在调用的php中返回一些数据。当您需要包含html时,可以调用一个方法,该方法将返回一个已准备好包含在当前html页面中的模板。例如,您可以在加载页面时包含index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

<div id="data-ajax"></div>

<script type="text/javascript" src="node_modules/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="js/timeline.js"></script>
</body>
</html>
您还可以让php返回要在ajax中使用的html:

$.ajax({
    type: "GET",
    dataType: "html",
    url: 'timeline.php',
    success: function (data) {
        $('#data-ajax').html(data);
    }
});
<?php

getTimelineData();

function getTimelineData() {
    //here you retrieve data from database
    $results = array(0 => 'first-result', 2 => 'second-result', 3 => 'third-result');

include_once 'timeline-data.php';
}


我认为PHP只会回显一次。首先,您似乎想要GET而不是POST。之后,在开发者控制台中检查是否接收到数据。另外,首先让php返回硬编码响应以排除数据库问题,然后检查while循环语法。本文可能会有所帮助:正如@greendemiurge所说的,您可以在开发人员控制台中进行调试。在success函数中,您可以放置:console.log(数据);加载页面时,右键单击页面并进行检查。然后,您可以在控制台上检查console.log的返回。不要多次响应XHR,而是将响应数据收集到单个字符串中,并回显该字符串。仍然继续…正如我上面所说的,代码似乎正常。控制台也没有显示任何内容。所以,它看起来是正常的。尝试使用
complete
回调查看是否有抛出一些状态。
<?php

getTimelineData();

function getTimelineData() {
    //here you retrieve data from database
    $results = array(0 => 'first-result', 2 => 'second-result', 3 => 'third-result');

include_once 'timeline-data.php';
}
Here is your data!

<?php foreach($results as $result) { ?>

<?= $result ?>

<?php } ?>