带有[echo json#encode';]的消息(数组)php到ajax不显示数据

带有[echo json#encode';]的消息(数组)php到ajax不显示数据,php,jquery,arrays,json,ajax,Php,Jquery,Arrays,Json,Ajax,我试图将一组数据从PHP发送到ajax。我正在使用echo json_encode来做这件事。当我这样做时,我尝试“console.log(data)”来查看响应数据,但它没有显示任何内容。如何让它显示数据?我真的不知道我错过了什么。我有这个剧本: var scard = $('#cardid').val(); $.ajax({ type: 'GET', url: 'cardapi.php?scard=' + scard, success: function (data)

我试图将一组数据从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);
}
所以我试着遵循这一点

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


谢谢。

您可以尝试以下方法:

  • 始终检查
    sqlsrv\u query()
    执行的结果
  • 始终尝试使用参数化语句。函数
    sqlsrv_query()
    同时执行语句准备和语句执行,并可用于执行参数化查询
  • 检查
    json\u encode()
    调用的结果
  • 修复键入错误(
    “已签名状态”=>1,
    应为
    “已签名状态”=>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;
}
?>


您是否尝试用示例值而不是生成的值回显示例数组?
console.log(数据))
是语法错误。请从
console.log(data)中删除最后一个括号所以你得到
console.log(数据)@u\u mulder对不起,我在这里打错了。那里没有发生错误。是的,我尝试了这个“echo json_encode([“hi”=>“test”,“hi2”=>“test2”]);”。它显示。我不明白(@RobinGillitzerOh谢谢,我已经知道发生了什么。错误是“格式错误的UTF-8字符,可能编码不正确”我接下来该怎么办?@Meawmill您可以尝试使用
json\u encode($data,json\u invalid\u UTF8\u ignore)
忽略无效字符,但阅读`可能是一个很好的起点。