【问题标题】:Messaage (array) php to ajax with [echo json_encode'] not show data带有[echo json_encode']的消息(数组)php到ajax不显示数据
【发布时间】:2020-03-09 09:13:10
【问题描述】:

我正在尝试将一组数据从 PHP 发送到 ajax。我正在使用 echo json_encode 来做到这一点。当我这样做时,我尝试“console.log(data)”来查看响应数据,但它没有显示任何内容。我怎样才能让它显示数据?我真的不知道我在这里错过了什么。我有这个脚本:

var scard = $('#cardid').val();
$.ajax({
    type: 'GET',
    url: 'cardapi.php?scard=' + scard,
    success: function (data) {
        console.log($.parseJSON(data));
        console.log(data);
    }
});

这是我的 cardapi.php 代码

if(isset($_GET["scard"])){
    $scard = $_GET["scard"];
    $data = array();

    $sql = "SELECT * FROM training_record WHERE cardref_no='$scard'";
    $q = sqlsrv_query($conn, $sql);

    while($rw = sqlsrv_fetch_array($q, SQLSRV_FETCH_ASSOC)){
        array_push($data,[
            "employee_no" => $rw["employee_no"],
            "dept_id" => $rw["dept_id"],
            "name_th" => $rw["name_th"],
            "surname_th" => $rw["surname_th"],
            "signed_status" => 1,
        ]);

    }

    echo json_encode($data);
}

所以我尝试关注这个echo json_encode() not working via ajax call

它仍然没有显示任何东西。请告诉我为什么?

谢谢。

【问题讨论】:

  • 您是否尝试使用示例值而不是您生成的值来回显示例数组?
  • console.log(data)); 是语法错误。
  • 去掉console.log(data));的最后一个括号,得到console.log(data);
  • @u_mulder 抱歉,我在这里打错了。那里没有发生错误。
  • 是的,我试过这个“ echo json_encode(["hi" => "test", "hi2"=>"test2"]); 。它显示。我不明白。 :(@RobinGillitzer

标签: php jquery arrays json ajax


【解决方案1】:

您可以尝试以下方法:

  • 始终检查 sqlsrv_query() 执行的结果。
  • 始终尝试使用参数化语句。函数sqlsrv_query()既做语句准备又做语句执行,可用于执行参数化查询。
  • 检查json_encode() 调用的结果。
  • 修复输入错误(例如"signed_status" => 1, 应该是"signed_status" => 1)。

示例脚本,基于您的代码:

<?php
if (isset($_GET["scard"])) {
    $scard = $_GET["scard"];
    $data = array();

    $sql = "SELECT * FROM training_record WHERE cardref_no = ?";
    $params = array($scard);
    $q = sqlsrv_query($conn, $sql, $params);
    if ($q === false) {
        echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true);
        exit;
    }   

    while ($rw = sqlsrv_fetch_array($q, SQLSRV_FETCH_ASSOC)) {
        $data[] = array(
            "employee_no" => $rw["employee_no"],
            "dept_id" => $rw["dept_id"],
            "name_th" => $rw["name_th"],
            "surname_th" => $rw["surname_th"],
            "signed_status" => 1
        );
    }

    $json = json_encode($data);
    if ($json === false) {
        echo json_last_error_msg();
        exit;
    }   

    echo $json;
}
?>

【讨论】:

  • 哦,谢谢,我已经知道发生了什么。错误是“格式错误的 UTF-8 字符,可能编码不正确”接下来我该怎么办?
  • @Meawmill 您可以尝试使用json_encode($data, JSON_INVALID_UTF8_IGNORE) 忽略无效字符,但可能阅读`UTF-8 all the way through 是一个很好的起点。
猜你喜欢
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 2022-06-19
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多