【问题标题】:decode json as html将json解码为html
【发布时间】:2011-02-14 19:35:32
【问题描述】:

所以我正在构建一个 Web 应用程序,并且我有一个 ajax 请求,它会 ping 一个数据库(或数据库缓存)并回显 json 的一个重要内容。我对 json 完全陌生,当 php 从数据库中提取时,我回显 json_encode($databaseResults),然后它在我的 html 页面中显示为一个长字符串。我的问题是,我如何转换它并将我需要的部分提取成一个好的格式?

谢谢!

页面中的 Json 结果如下所示:

"[{\"currentcall\":\"1\",\"timecall\":\"15:30\",\"etaTime\":\"15:35\",\"departmentID\ ":\"1\",\"memberID\":\"1\",\"callinnum\":\"1\",\"location\":\"Fire House\",\"billed\" :\"N\",\"日期\":\"2\\/12\\/11\",\"firstName\":\"Phil\",\"lastName\":\"asdf\" ,\"email\":\"pasdf@gmail.com\",\"homephone\":\"+19111111111\",\"手机\":\"+11234567891\",\"cellphone2\":null ,\"workphone\":null,\"phonenumber5\":null,\"phonenumber6\":null,\"streetAddress\":\"10 asdfnt Dr\",\"city\":\"\", \"用户名\":\"pgsdfg\",\"密码\":\"0623ab6b6b7dsasd3834799fbf2a08529d\",\"admin\":\"Y\",\"资格\":\"内饰\",\" rank\":null,\"cpr\":null,\"emt\":null,\"training\":null,\"datejoined\":null,\"dateactive\":null,\"state\ ":\"DE\",\"zip\":\"51264\",\"pending\":\"NO\",\"defaultETA\":\"7\",\"apparatus\": \"asdKE-286\"}]"

可能有多个结果...这只是一个结果

编辑:

基本上,我试图将数组中的一堆行传递到一个 html 文件中,并且只取出我需要的数据并对其进行格式化。我不知道 json 是否是最好的方法,我只是想出了一个解决方案。因此,如果有人有更好的解决方案,那就太棒了。

编辑2: 这是我发出请求的 jquery,php 只有 echo json_encode ($DBResults);

function getResponder(){
    var responders = $.ajax({
            type : "POST",
            url: "/index.php/callresponse/get_responders",
            success: function(html){
                $("#ajaxDiv").html(html);   
            }
    });

setTimeout("getResponder()", 10000);
}

【问题讨论】:

  • databaseResults 是什么样子的?据我了解,这只是一个字符串,我正确吗?如果您只返回一个字符串,那么使用 json 有什么意义? json 的好处是你可以在一个字符串中传递多个值,然后在 javascript 端将它们转换为对象/数组。
  • 从您的代码示例的外观来看,您应该从您的 php 脚本中传递纯 html 而不是 JSON。如果您想使用 json,您可能需要使用 jQuery getJSON 函数。但是,如果您使用 json 替代方案,则必须定义要打印数据的位置,您不能只将 #ajaxDiv 的 innerHTML 设置为 json 字符串而不是对象。
  • 嗯,好的,谢谢。我将研究 jQuery getJson 或将其直接放入 html
  • 你确定你没有返回很多值吗?你真的想把密码哈希等放在表中吗?您返回的值不少于 35 个。我打算用你的数据写一个例子,但我会等着看这是否真的是你想要的。
  • 嗯,我想我不需要所有这些。我会相应地调整我的sql语句,但我真的只需要firstName、lastName、Location、defaultETA和设备

标签: php jquery html ajax json


【解决方案1】:

当您将此标记为 jquery 时,我假设您使用的是 jQuery。如果你只想得到一个字符串,你可以跳过 json 部分并使用 jQuery .load() 像 $('#result').load('ajax/test.php'); 这样将 ajax/test.php 中的内容加载到 #result

但是,如果您想使用 json,您可以查看 getJSON on the jQuery documentation。您还可以使用jQuery parseJSON function,它将返回 json 一个包含 jsonData 的 javascript 对象。

这是一个如何使用 parseJSON 的示例

var object = $.praseJSON(jsonString); //jsonString is the string containing your actual json data
alert(object.location) //Will alert "Fire House" with the given json string

这是一个如何以相同方式使用 getJSON 的示例

$.getJSON('ajax/test.php', function(object) {
  alert(object.location); //Will alert "Fire House" with the given json string
});

如果你也想传递参数,你可以这样做

$.getJSON('ajax/test.php', 
    { 
        Param1 : "Value1", 
        Param2 : "value2" 
    },
    function(object) {
        alert(object.location);  //Will alert "Fire House" with the given json string
    }
);

如果您尝试将 json 从 javascript 发送到 php,您可以使用

$jsonArray = jsonDecode($_GET['key']); 

当然,如果您使用 post,您将改为使用 $_POST。

【讨论】:

    【解决方案2】:

    您必须将数据解析为 JSON 对象,然后您可以随意使用该对象的属性。

    没有看到细节,我可以告诉你,你需要使用 JSON 对象来解析文本。在此处查看更多信息:http://www.json.org

    var obj = JSON.parse(ajaxResponseText);
    

    【讨论】:

    • 并非所有浏览器都支持原生 JSON.parse()
    • 是的。但是,答案是笼统的,因为没有具体细节。该链接包含指向可下载 JS 库的链接,该库在所有浏览器上提供 JSON.parse() 功能。 github.com/douglascrockford/JSON-js
    • 您的链接已损坏
    【解决方案3】:

    您应该使用 php 函数json_decode,它将为您提供一个包含所有属性的对象或数组。

    然后你应该递归地遍历这个对象并将属性的内容添加到一个字符串中,这应该是你最终的 HTML。

    【讨论】:

    • hmm,所以如果我做 json_decode 它会给我一个数组,然后我可以使用 php 访问数组中的所有内容?
    • 等一下,您是在尝试将 json 从 javascript 发送到 php 还是以其他方式发送。正如我从最初的帖子中了解到的那样,您试图将 json 发送到 javascript,而不是相反。
    • 查看我的编辑。基本上我需要从数据库中获取信息到 html 文件中。我不确定最好的方法
    【解决方案4】:

    通常通过 web 请求在 jquery(例如) 之后的 html 元素中显示 JSON 响应,试试这个:

    $("#box-content-selector").append(
        "<pre>"+
        JSON.stringify(JSON.parse(data), null, 4)+
        "</pre>"
    )
    

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 2021-12-26
      • 2010-12-31
      • 2018-10-04
      • 1970-01-01
      • 2020-06-14
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多