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

如何将PHP中两条SQL查询结果通过AJAX传递给单个JS函数使用

问题核心原因

你出现undefined的本质是PHP返回的内容不是标准JSON结构,导致JS端解析失败,原因有几个:

  1. PHP变量未定义抛出的notice警告、数据库查询失败输出的错误信息和JSON混在一起,破坏了结构
  2. 输出JSON的方式不对,且没有终止后续输出,可能混入多余的空格、换行
  3. while循环逻辑有漏洞,如果第二条查询无返回结果,$einer、$zwoelfer变量未定义

修复步骤

1. 修复PHP代码

<?php
require 'inc/db.php';

// 第一条查询
$erg = $db->query("SELECT id, sender FROM packaging_log WHERE sender='test' AND packaging='1er'")
or die($db->error);

// 第二条查询
$gesteigereiner = $db->query("SELECT * FROM geliefert WHERE 1")
or die($db->error);

// 先初始化变量,避免查询无结果时变量未定义
$einer = 0;
$zwoelfer = 0;
while ($zeile = $gesteigereiner->fetch_object()) {
    $einer = $zeile->test1er;
    $dreier = $zeile->test3er;
    $sechser = $zeile->test6er;
    $zwoelfer = $zeile->test12er;
    // 注意:如果你的geliefert表有多行数据,这里的写法只会保留最后一行的值,如果要所有数据需要用数组存储
}

$geliefert = array ( 
    "nr"        => $erg->num_rows,
    "einer"     => $einer,
    "zwoelfer"  => $zwoelfer
);

// 加JSON响应头,避免浏览器识别错误
header('Content-Type: application/json; charset=utf-8');
// 用echo输出JSON,不要用print_r,输出后立刻终止程序,避免多余内容
echo json_encode($geliefert);
exit;
?>

另外请检查inc/db.php文件的首尾,不要有PHP标签外的空格、换行,也不要有其他echo/print输出,否则会混入JSON内容导致解析失败。

2. 优化JS代码

function clickPHPtoJS(){
    $.ajax({
        url: "index.php",
        type: "POST",
        dataType: "json", // 声明返回格式为JSON,jQuery会自动解析
        success: function(response) {
            console.log(response);
            clickPHPtoJSResponse(response);
        },
        error: function (xhr) {
            // 出错时打印原始返回内容,方便排查问题
            console.log("请求失败,原始返回内容:", xhr.responseText);
        }
    });
}

function clickPHPtoJSResponse(response) {
    // 做空值兼容,避免属性不存在时报错
    var einer = response.einer || '无数据';
    var zwoelfer = response.zwoelfer || '无数据';
    var anzahl = response.nr || '无数据';
    document.getElementById("lab1er").innerHTML = einer + " " + zwoelfer + " " + anzahl;
}

排查验证方法

你可以直接在浏览器访问你的index.php地址,查看输出的内容:

  • 如果是纯JSON格式(比如{"nr":3,"einer":5,"zwoelfer":2}),说明PHP端输出正常
  • 如果有报错信息、空格、换行等其他内容,就对应处理这些额外输出即可

你的需求完全可行,不需要迂回方案,把以上问题修复就能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:15:04