javascript - PHP 解析 PDO Fetch 为 JSON

标签 javascript php mysql json pdo

我试图获取一个 PHP 文件来执行 MySQL 查询并将结果以 JSON 格式返回给 Javascript 函数。

我的PHP:

require_once("class.user.php");
$auth_user = new USER();

$stmt = $auth_user->runQuery("
        SELECT *
        FROM projects;
");                       
$stmt->execute();
$results=$stmt->fetchall(PDO::FETCH_ASSOC); 

file_put_contents('filename.json',json_encode($results));

header('Content-type: application/json');
echo json_encode($results);

我的 JavaScript:

function getProjectNames(){
var dataList = document.getElementById('projectNames');
if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
} else {
    // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        IsJsonString(this.response);
        //document.getElementById("projectsresults").innerHTML = this.response;
    }
};
xmlhttp.open("GET","getProjectNames.php",true);
xmlhttp.send(null);
}
function IsJsonString(str) {
    try {
        document.write(JSON.stringify(str));
    } catch (e) {
        document.write("is not valid JSON" + e);
        return false;
    }
    //document.write("is valid JSON");
    return true;
}

现在 JavaScript 将显示

[{"Project_ID":"1","Name":"Software Project 1"},{"Project_ID":"2","Name":"Software Project 2"}]

但是,如果我尝试将其解析为 JSON 并访问变量,那么它会返回“未定义”或“null”。我尝试过“JSON.stringify”并返回

"\r\n\r\n\r\n\r\n\r\n\r\n[{\"Project_ID\":\"1\",\"Name\":\"Software Project 1\"},{\"Project_ID\":\"2\",\"Name\":\"Software Project 2\"}]\r\n"

所以我认为 PHP 编码 JSON 和 Javascript 获取 JSON 之间一定出了问题。我已经没有想法了,任何帮助将不胜感激。

编辑:添加了其余的 PHP 和 Javascript 代码

最佳答案

尝试使用它代替 IsJsonString 函数:

function IsJsonString(response){
    var parsedJson = JSON.parse(response);
    var jsonString = JSON.stringify(parsedJson);

    document.getElementById("projectNames").innerHTML = jsonString;
}

并将其作为参数传递 this.response

关于javascript - PHP 解析 PDO Fetch 为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42933462/

相关文章:

javascript - MS 团队上的 Botframework : copy paste input not parsed to the backened

javascript - removeClass 和 removeClass 图像不起作用

javascript - 计算 JavaScript 中的对象数量

php - 查询未显示

javascript - 使用javascript从php获取json数据

php - Paypal 自定义字段

php - 无法通过 php pdo 驱动程序连接到 postgreSQL 数据库

php - 如何删除数组中的重复项?

sql - 对 sql 中的常见结果进行分组

mysql - CakePhp TranslateBehavior,验证并保存多个语言环境