【问题标题】:JSON encode MySQL results then read using jQueryJSON 编码 MySQL 结果然后使用 jQuery 读取
【发布时间】:2012-06-20 08:54:58
【问题描述】:

我有一个数据库表,其中包含一些我想使用 PHP 获取然后使用 JSON 对其进行编码的行。

目前,我的数据库结构如下:

idcomponente | quantidade

在 PHP 中获取值后,我想知道如何使用 JSON 对它们进行编码(具有多行,使用相同的名称),以便我可以使用 jQuery.post() 读取它们。

$.post('test.php',{id:id},function(data){
    //READ data HERE
});

提前致谢

编辑:

到目前为止,我做了这个:

$.post('edit/producomponentes.php',{id:id},function(data){
    console.log(data);
});


记录这个:

[Object { componente="1", quantidade="2"}, Object { componente="3", quantidade="3"}]

现在我怎样才能遍历每一行并获取它们的属性? (data.componente, data.quantidade)

【问题讨论】:

    标签: php jquery json


    【解决方案1】:

    这里我试着给你一些想法。

    使用 key => value 对在 PHP 中创建关联数组

    $data = array('id' => 1, 'quat' => 10, 'id' => 2, 'quat' => 20)
    

    然后将其发送为 json_encode() 喜欢

    header('Content-type: application/json');  // don't miss it
    echo json_encode(array('data' => $data));
    

    在 jQuery 中

    $.post('edit/producomponentes.php',{id:id},function(response){
        //READ data HERE.
        console.log(response.data); // you will get a json Object
    }, 'json');
         ^-------- set dataType as json, then you don't any extra parse effort
    

    根据编辑

     $.post('edit/producomponentes.php',{id:id},function(data){
            $.each(data, function(index, value) {
               console.log(value.componente);
               console.log(value.quantidade);
            });
        }, 'json');
    

    【讨论】:

    • 不要忘记在 php 文件中设置正确的标头以提供 JSON :)
    • 谢谢。我已经有了标题,现在我唯一的问题是如何遍历行(参见编辑后的帖子)。
    【解决方案2】:

    在test.php中

    $id = $_POST['id']; // if is 'id' passed to fetch one row
    $db = new mysqli(HOST,USER,PASS,DB_NAME);
    $q = "SELECT * FROM table WHERE id='$id'";
    $result = $db->query($q);
    

    编辑为 json 响应提供适当的标头

    header('Cache-Control: no-cache, must-revalidate');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Content-type: application/json');
    echo json_encode($result->fetch_all(MYSQLI_ASSOC));
    $result->close();
    $db->close();
    

    在 JavaScript 中

    $.post('test.php',{id:id},function(data){
        console.log(data); // data is already a js object
    },'json'); // specify the data type you expect
    

    【讨论】:

    • PHP 端已完成,现在我需要遍历 jQuery 中的行(参见编辑后的帖子)。谢谢
    • header() Cache-Control 和 Expires 真的有必要吗?
    • 不是真的,但会阻止浏览器缓存响应,这是您不希望使用 ajax 响应的东西
    【解决方案3】:

    您可以将每一行放在一个数组中,然后在最后一个数组上运行 json_encode() 以获得一个大的 JSON 对象。

    参考 - http://php.net/manual/en/function.json-encode.php

    【讨论】:

      【解决方案4】:

      使用 JSON.parse 将数据作为对象获取

      var object1 = JSON.parse(data);
      alert(object1.property1);
      

      对于php上的编码,使用

      json_encode($result); //assuming you're getting a result set.
      

      对您的结果集进行编码并

      echo json_encode($result);
      

      将其打印到文档正文,以便您可以使用 jquery 获取结果数据

      文档是here

      您需要对其进行多次测试,耐心等待,并在 php 端使用 echo 并在客户端使用 alert() 来检查您的值。

      【讨论】:

      • 我的问题是(使用PHP),如何正确编码同名的多行!
      猜你喜欢
      • 2010-09-27
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 2015-10-06
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      相关资源
      最近更新 更多