【问题标题】:Cant display json data on the page using php and ajax无法使用php和ajax在页面上显示json数据
【发布时间】:2020-01-25 20:28:54
【问题描述】:

我创建了一个生成 json 数据的 php 文件。如下所示,但它似乎没有返回任何数据。

当我尝试获取 data.status 时,我得到一个未定义的错误。它似乎连接到文件没问题,因为之前我编写了一个警报,它拖回所有数据,但我似乎无法获得特定值。

下面我试图检索状态:ok 值。

Json 数据:

{"status":"ok","Results":{"SiteId":"1","SiteCode":"RWP50","DateCreated":"2019-09-25 09:14:23","DateClosed":null}}

Ajax 代码

$('#ddlsite').change(function () {
    var SiteCode = $('#ddlsite').val();
    alert(SiteCode);

    $.ajax({
                type: 'GET', 
                url: 'GetSites.php',
                datatype: 'json',
                contentType: "application/json; charset=utf-8",
                success:function(data){ 
                alert(data.status);
                if(status == "ok"){
                alert('It Worked'); 
            }else{
            alert('It Failed');
        }   
    }
});
}); 

PHP 文件

<?php
// if(!empty($_POST['SiteCode'])){
    $data = array();

// Create connection
include 'connecting_test.php'; 
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

// sql to delete a record
$sql = "SELECT * FROM Site";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    // while($row = $result->fetch_assoc()) {
        $SiteData = $result->fetch_assoc();
        $data['status'] = 'ok';
        $data['Results'] = $SiteData;
    // }
} else {
    echo "0 results";
}

echo json_encode($data);

$conn->close();
// }else {
    // echo "hello";
// }
?>

【问题讨论】:

    标签: javascript php mysql json ajax


    【解决方案1】:

    你只需要更新你的 ajax

    $.ajax({
            type: 'GET', 
            url: 'xhr.php',
            datatype: 'json',
            contentType: "application/json; charset=utf-8",
            success:function(data){ 
                data = JSON.parse(data);
                if(data.status == "ok"){
                    alert('It Worked'); 
                }
                else{
                    alert('It Failed');
                }   
            }
    });
    

    因为你需要解析从php文件返回的json

    【讨论】:

    • Ankit,非常感谢您的帮助。这行得通。
    【解决方案2】:

    我假设您的 ajax api 调用工作正常,并且返回正确,因为数据类型是 json, 所以警报应该可以正常工作,但是 if 语句 if(status == "ok") 找不到变量状态的引用。如果没有在其他地方声明它应该是 data.status 然后会抛出类型错误...

    【讨论】:

    • 您好,感谢您的回复。是的,我在屏幕上显示 json 数据。我已将 if 语句更改为 status.data,并且在警报中我也放入了 status.data 但我收到了未定义的警报。
    • 嗨@Stu,当您在ajax 调用中提供dataType: 'json' 时,返回的数据将由jQuery 基于dataType 自动解析。再次解析它是一种不好的做法。您的 ajax 调用设置中有一个小错字。只是之前错过了那个。只需将密钥 datatype: 'json' 更改为 dataType:'json' 即可,无需解析即可工作。 JSON 键区分大小写。不知道为什么它还是被否决了。更多信息请参见参考页面here
    • 嗨@KdCoder,感谢您的回复,我已经做出了修改并按预期工作。 :-)
    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    相关资源
    最近更新 更多