【问题标题】:Fetching json using ajax to display to user使用ajax获取json以显示给用户
【发布时间】:2015-04-13 09:00:32
【问题描述】:

这是我的 PHP 代码以 json 格式获取,它可以正常工作并显示 json 数据,因为我已经检查过了。但当我希望向用户显示相同的内容时不显示。

<?php>
    include('connect.php');
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");

    $result = $conn->query("SELECT filmName, url, filmYear FROM table");

    $outp = "[";
    while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
        if ($outp != "[") {$outp .= ",";}
        $outp .= '{"Film":"'  . $rs["filmName"] . '",';
        $outp .= '"Path":"'   . $rs["url"]        . '",';
        $outp .= '"Year":"'. $rs["filmYear"]     . '"}'; 
    }
    $outp .="]";

    $conn->close();

    echo($outp);
    ?>

在这里,我将 url 以 getfilms.php 的形式传递给用户,它具有上述代码。

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <link href="site.css" rel="stylesheet">
</head>
<body>

<nav id="nav01"></nav>

<div id="main">
  <h1>films</h1>
  <div id="id01"></div>
</div>

<script>
    var xmlhttp = new XMLHttpRequest();
    var url = "getfilms.php";
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            myFunction(xmlhttp.responseText);
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();

    function myFunction(response) {
        var obj = JSON.parse(response);
        var arr = obj.records;
        var i;
        var out = "<table><tr><th>Film</th><th>Path</th><th>Year</th></tr>";

        for (i = 0; i < arr.length; i++) {
            out += "<tr><td>" +
        arr[i].Film +
        "</td><td>" +
        arr[i].Path +
        "</td><td>" +
        arr[i].Year +
        "</td></tr>";
        }
        out += "</table>"
        document.getElementById("id01").innerHTML = out;
    }
</script>

</body>
</html>

【问题讨论】:

  • 我建议您不要自己构建 json,而是为此目的使用 json_encode。 $outp[] = $ 行; echo json_encode($outp);
  • @ 两次 ejr,因为我是新手,如何实现上述代码?这也适用于移动应用程序?
  • 是的,我已经把它贴在这里了:pastebin.com/TNAt65zU 我认为 javascript 也应该适用于移动应用程序。您是在构建原生应用还是网络应用?
  • @ 两次 ejr 工作正常,但我将如何获取与用户相同的内容,因为我拥有上述 html 文件?因为目前它只是以 json 文件的形式出现
  • 注释掉这一行:“var arr = obj.records”。将 'var obj =' 替换为 'var arr =' - 您针对 obj 变量的未定义索引(obj 上的 json 数组中不存在记录)

标签: php mysql ajax json


【解决方案1】:

您的构建 json 不是这样做的好方法。

制作一个数组然后简单echo json_encode(Your_array);

这给你一个完美的 json 格式。

要解析 json 值,请使用这个..

var 结果 = $.parseJSON(response);

使用这个result.value;

【讨论】:

    【解决方案2】:

    谢谢@twicejr,它工作得很好。我代表你发布答案。

    注释掉这一行:“var arr = obj.records”。将 'var obj =' 替换为 'var arr =' - 您已针对 obj 变量的未定义索引(obj 上的 json 数组中不存在记录)

    var arr = JSON.parse(response);
            //var arr = obj.records;
    

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      相关资源
      最近更新 更多