使用 PHP 和 AJAX/JSON 将数据传递到 J*aScript 的教程


使用 php 和 ajax/json 将数据传递到 javascript 的教程

本文档旨在指导开发者如何使用 PHP 从数据库中检索数据,并通过 AJAX 和 JSON 格式将其传递到 J*aScript 中,以便在网页上动态显示。我们将重点解决常见的 "Unexpected end of JSON input" 错误,并提供清晰的代码示例和步骤说明。

PHP 端:数据检索与 JSON 编码

首先,我们需要在 PHP 中从数据库中检索数据,并将其编码为 JSON 格式。关键在于正确使用 mysqli_fetch_all() 函数,并将结果集转换为关联数组,然后再进行 JSON 编码。

<?php
// 假设 $connection 是有效的数据库连接
function retrieve_post($connection) {
    $sql = "SELECT * FROM tbl_user_posts";
    $result = mysqli_query($connection, $sql);

    // 检查查询是否成功
    if (!$result) {
        die("Query failed: " . mysqli_error($connection));
    }

    // 检查结果集是否为空
    if (mysqli_num_rows($result) > 0) {
        // 将结果集转换为关联数组
        $data = mysqli_fetch_all($result, MYSQLI_ASSOC);

        // 将关联数组编码为 JSON 格式
        echo json_encode($data);
    } else {
        // 如果结果集为空,返回一个空数组的 JSON
        echo json_encode([]);
    }
}
?>

代码解释:

  1. mysqli_query($connection, $sql): 执行 SQL 查询。
  2. mysqli_num_rows($result): 检查结果集中是否有数据。这是避免 "Unexpected end of JSON input" 错误的关键步骤,因为如果结果集为空,直接 json_encode 可能会导致问题。
  3. mysqli_fetch_all($result, MYSQLI_ASSOC): 将结果集一次性提取为关联数组。MYSQLI_ASSOC 确保数据以键值对的形式存储,方便 J*aScript 处理。
  4. json_encode($data): 将 PHP 数组编码为 JSON 字符串。

重要提示:

  • 确保数据库连接 $connection 是有效的。
  • 始终检查 SQL 查询是否成功,并处理错误。
  • 如果查询结果为空,返回一个空数组的 JSON (echo json_encode([])),而不是 null 或其他值。

J*aScript 端:AJAX 请求与 JSON 解析

接下来,我们需要使用 J*aScript 发送 AJAX 请求到 PHP 脚本,并解析返回的 JSON 数据。

function displayPosts() {
    $.ajax({
        type: "POST",
        url: "main_page.php", // 确保 URL 正确
        dataType: "json", // 明确指定期望的数据类型为 JSON
        success: function(response) {
            // response 已经是 JSON 对象,无需再次解析
            console.log(response);

            // 遍历数据并显示
            for (var i = 0; i < response.length; i++) {
                var row = response[i];
                var name = row.name;
                var user_post = row.user_post;
                console.log(name, user_post);

                // 在 HTML 中显示数据 (示例)
                $("#posted").append("<p>" + name + ": " + user_post + "</p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/xiazai/learn/2592">
                            <img src="https://img.php.cn/upload/webcode/000/000/000/5a2b9a0c4f1dd506.png" alt="初阶PHP Apache MySQL网站设计">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/xiazai/learn/2592">初阶PHP Apache MySQL网站设计</a>
                            <p>初阶PHP Apache MySQL网站设计来自作者多年学习、应用和讲授PHP的经验与体会,是专为学习PHP+MySQL数据库编程人员编与的入门教材。在最后二章设计了2个贴近实际应用的典型案例:留言本系统和论坛系统,每个案例先介绍开发思路、步骤,再给出全部源代码,使所学内容与实际应用紧密结合,特别是论坛系统将全书的案例串讲起来,力求使读者学到最贴近应用前沿的知识和技能。
</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="初阶PHP Apache MySQL网站设计">
                                <span>377</span>
                            </div>
                        </div>
                        <a href="/xiazai/learn/2592" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="初阶PHP Apache MySQL网站设计">
                        </a>
                    </div>
                ");
            }
        },
        error: function(xhr, status, error) {
            console.error("AJAX request failed:", status, error);
            console.log("Response Text:", xhr.responseText); // 打印完整的响应文本
        }
    });
}

$(document).ready(function() {
    displayPosts();
});

代码解释:

  1. $.ajax({...}): 发起 AJAX 请求。
  2. type: "POST": 指定请求方法为 POST。
  3. url: "main_page.php": 指定 PHP 脚本的 URL。 确保URL正确,建议使用小写字母命名文件。
  4. dataType: "json": 告诉 jQuery 期望从服务器接收 JSON 数据。这会自动将响应解析为 J*aScript 对象,因此不需要手动使用 JSON.parse()。
  5. success: function(response): 请求成功时的回调函数。 response 参数已经是一个 J*aScript 对象,可以直接使用。
  6. error: function(xhr, status, error): 请求失败时的回调函数。 务必添加错误处理,打印 xhr.responseText 可以帮助你查看服务器返回的完整错误信息,从而更容易调试问题。
  7. $("#posted").append("

    " + name + ": " + user_post + "

    ")
    : 一个示例,展示如何将数据添加到 HTML 元素中。你需要根据你的实际 HTML 结构进行调整。

关键点:

  • dataType: "json": 设置此选项后,jQuery 会自动解析 JSON 响应。
  • 错误处理: 添加 error 回调函数,以便在请求失败时进行调试。
  • URL: 确保 url 指向正确的 PHP 脚本。

HTML 结构

HTML 结构应该包含一个用于显示数据的容器。

<div class="user-post">
    Create post:<br>
    <form id="form" method="POST">
        <textarea id = "create_post" name="create_post" rows="10" cols = "50"></textarea>
        <input type="submit" class="post-button" value="PostButton">
    </form>
</div>
<div class="posts" id="posted">
    <div class="post">
        <h3 id="existing_posts">@@##@@Posts</h3>
        <div class="options">
            <a href="">Like</a>
            <a href="">Comment</a>
            <a href="" class="report">Report</a>
        </div>
    </div>
</div>

总结与注意事项

  • 确保 PHP 返回有效的 JSON 数据。 使用 json_encode() 函数,并在结果为空时返回 json_encode([])。
  • 在 J*aScript 中设置 dataType: "json"。 这告诉 jQuery 自动解析 JSON 响应。
  • 添加错误处理。 在 AJAX 请求的 error 回调函数中打印错误信息。
  • 检查 URL 是否正确。 确保 AJAX 请求的 URL 指向正确的 PHP 脚本。
  • 使用浏览器的开发者工具进行调试。 查看网络请求和控制台输出,可以帮助你诊断问题。

通过遵循这些步骤,你应该能够成功地使用 PHP 和 AJAX/JSON 将数据传递到 J*aScript 中,并在网页上动态显示。 记住,调试是开发过程中不可或缺的一部分,善用浏览器的开发者工具可以极大地提高你的效率。

Default Picture

以上就是使用 PHP 和 AJAX/JSON 将数据传递到 J*aScript 的教程的详细内容,更多请关注php中文网其它相关文章!


# php  # 网页设计优化网站名称  # 怎么做问答口碑营销推广  # 河北seo公司是什么  # 白城seo助手软件  # 是一个  # 检查结果  # 实际应用  # 数据库中  # 转换为  # 错误信息  # 并在  # 为空  # 回调  # mysql  # javascript  # java  # jquery  # html  # js  # json  # ajax  # 编码  # 浏览器  # ap  # 网站设计  # 龙泉网站建设服务  # 邮件营销推广群发软件  # 市场推广和营销策划谁大  # 白云企业网站优化  # 佛山诚信网站优化  # 罗山企业推广营销中心 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: win11如何开启单声道音频 Win11为听障用户合并左右声道【辅助】  如何在CSS中使用过渡制作按钮边框渐变_border-color transition实现  微信客户端怎么查看二维码_微信客户端个人二维码查看方法  Animex动漫社社登录官网 Animex动漫社资源社入口直达  使用Python和NLTK从文本中高效提取名词的实用教程  C++中std::thread和std::async的区别_C++并发编程与线程与异步任务比较  poki官网最新入口 poki小游戏大全入口  折叠屏手机充不进电是什么问题? 特殊结构带来的维修难点  原子笔记app误删找回教程  Git命令与VS Code UI操作的对应关系解析  Win10运行窗口在哪里打开 Win10调出运行命令框快捷键【技巧】  顺丰快递单号查询寄件人 顺丰寄件人查询入口  食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗  Sublime怎么配置YAML文件格式化_Sublime YAML Formatter插件教程  除了Copilot,还有哪些值得一试的VS Code AI插件?  铁路12306官网登录入口 铁路12306在线购票官方平台  Yandex世界探索 最新官方免登录入口全知道  win11如何运行chkdsk命令 Win11检查和修复磁盘逻辑错误教程【修复】  LocoySpider如何批量采集电商商品_LocoySpider电商采集的模板应用  Flexbox布局:实现粘性导航与底部页脚的完美结合  抖音号升级企业号怎么改名字?升级企业号有哪些好处?  《豆瓣》私信用户方法  126邮箱申请入口官网_126邮箱注册免费登录2025  《猎聘》筛选猎头岗位方法  composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?  Python类装饰器动态修改方法时的类型提示:Mypy插件实现精确静态分析  猫眼电影app怎么查询电影院的营业时间_猫眼电影影院营业时间查询教程  谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问  歌词怎么展示在|直播|间视频号?有什么注意事项?  视频号视频怎么提取文案?提取的文案如何优化与使用?  在Dash应用中自定义HTML标题和网站图标  火狐浏览器无法自动更新怎么办 手动更新火狐浏览器到最新版本【解决】  mysql中如何分析索引使用情况_mysql索引使用分析方法  如何查询国外邮政编码_国外邮政编码查询的多种有效途径  使用逻辑应用(Logic Apps)自动处理邮件附件中的XML到Excel  b站怎么用微信登录_b站微信登录方法  猫眼电影app如何筛选支持退改签的影院_猫眼电影退改签影院筛选方法  汽水音乐官网网页版入口 汽水音乐官网网页版在线入口  iCloud官方网站 iCloud网页版在线登录入口  《杖剑传说》食谱大全  Keras中Convolution2D层及其核心辅助层详解  阿里旺旺电脑网页版入口 阿里旺旺电脑版网页登录入口  Win10如何查看已安装的更新补丁 Win10卸载指定更新教程【教程】  Win10怎么设置快速启动 Win10开启快速启动设置方法  电脑双系统如何安装和卸载 Windows和Linux双系统安装教程【详解】  如何配置VS Code作为您Git操作的默认编辑器  广州地铁app准妈咪徽章领取方法  学习通网页版个人登录_学习通网页版个人账户登录入口  b站如何剪辑视频_b站必剪app使用教程  金牛福袋获取攻略 

 2025-11-02

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.