You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AJAX函数返回Void,如何将PHP fread内容输出到HTML div?附TXT读取函数

解决AJAX返回空值并将PHP读取内容输出到HTML Div的问题

嘿,我来帮你搞定这个问题!看起来你的AJAX返回空值,主要是因为PHP代码没有正确输出最终内容,还有一些逻辑和语法上的小问题。咱们一步步来修复:

1. 修复PHP代码的核心问题

你的PHP代码片段里有几个关键问题:fread参数不全、$output被循环覆盖、最后没有输出内容,还有文件资源没有正确关闭。下面是修改后的完整PHP代码:

<?php
$q = $_REQUEST["q"];
$output = "";

if ($q !== "") {
    $bestand = fopen("Blogs.txt", "r");
    if (!$bestand) {
        echo "Kon geen bestand openen";
        exit; // 出错后直接终止,避免后续执行
    }

    while (!feof($bestand)) {
        $blog = fgets($bestand);
        $blog = trim($blog); // 去除换行和空格,避免空行干扰
        if (empty($blog)) continue; // 跳过空行

        $blogParts = explode(",", $blog);
        $i = 0;
        foreach ($blogParts as $key) {
            $i++;
            if ($i % 2 == 0) {
                // 偶数位是标题,追加到输出
                $output .= "<h3>$key</h3>";
            } else {
                // 奇数位是博客文件名,读取内容
                $blogFilePath = "Blogs/$key";
                if (!file_exists($blogFilePath)) {
                    $output .= "<p>Blog bestand '$key' bestaat niet!</p>";
                    continue;
                }
                $Blogname = fopen($blogFilePath, "r");
                $Blogtext = fread($Blogname, filesize($blogFilePath));
                $output .= "<p>$Blogtext</p>";
                fclose($Blogname); // 关闭文件资源
            }
        }
    }
    fclose($bestand); // 关闭主文件资源
    echo $output; // 关键:输出内容给AJAX接收
} else {
    echo "Geen query ontvangen";
}
?>

2. 前端AJAX代码(原生JavaScript)

接下来写前端代码,发送请求到PHP文件,把返回的内容插入到指定的div中:

<!-- 页面上的目标div -->
<div id="blogContent"></div>

<script>
// 假设你有一个触发AJAX的事件,比如按钮点击
document.querySelector('#loadBlogBtn').addEventListener('click', function() {
    const q = "your_query_value"; // 替换成实际的q参数值
    const xhr = new XMLHttpRequest();
    
    xhr.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            // 将返回内容插入到div中
            document.getElementById("blogContent").innerHTML = this.responseText;
        } else if (this.readyState == 4) {
            // 请求失败时提示
            document.getElementById("blogContent").innerHTML = "Er is een fout opgetreden bij het laden van de blogs.";
        }
    };
    
    xhr.open("GET", "your_php_file.php?q=" + encodeURIComponent(q), true);
    xhr.send();
});
</script>

3. 关键注意事项

  • 确保Blogs.txt和Blogs目录的权限正确,PHP要有读取权限
  • 替换代码中的your_php_file.php为你的实际PHP文件名
  • 如果用POST请求,要调整AJAX的open方法和发送数据的方式,同时PHP用$_POST["q"]接收
  • 记得对用户输入的q做安全过滤,比如用htmlspecialchars防止XSS攻击

内容的提问来源于stack exchange,提问作者Cinition

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:29:05