【问题标题】:json_encode in phpphp中的json_encode
【发布时间】:2011-03-23 23:20:53
【问题描述】:

我有这个脚本,它可以工作,但不像我预期的那样。我需要分配一个具有不同名称的值数组,现在所有 $arr[] 都被命名为“valor”

{"valor":"20"},{"valor":"50"}

我需要

{"valor1":"20"},{"valor2":"50"}

脚本

    $query = mysql_query("SELECT valor FROM grafico") or die(mysql_error());

    $arr = array();
    while($row = mysql_fetch_assoc($query)) {
        $arr[] = $row;
    }
    echo json_encode($arr);


in ajax

    <script type="text/javascript">
       jQuery(document).ready(function(){
          jQuery("button").click(function(){

             jQuery.ajax({
                url: "chart.php",
                dataType: "json", 
                success: function(json){
                   var msg = "Nome: " + json.valor1+ "\n";
                   msg += "Sobrenome: " + json.valor2 + "\n";

                   alert(msg);
                }
             });
          });
       });

       </script>

问题是:我需要创建一个循环来创建唯一名称,如 value1、value2、value3

喜欢

$arr['valor1'] = "Evandro";

我尝试了一个循环,但我得到一个内存错误

谢谢

【问题讨论】:

    标签: php javascript ajax json


    【解决方案1】:

    试试这个:

    $query = mysql_query("SELECT valor FROM grafico") or die(mysql_error());
    
    $arr = array();
    $i = 1;
    while($row = mysql_fetch_assoc($query)) {
        $arr[] = array("valor{$i}" => $row["valor"]);
        ++$i;
    }
    echo json_encode($arr);
    

    应该可以。或者,如果您想让它与当前回调一起使用,请将 $arr[] = 行更改为以下内容:

        $arr["valor{$i}"] = $row["valor"];
    

    【讨论】:

    • 结果是 [{"valor1":"20"},{"valor2":"50"}] ?> 但警报不起作用。它应该工作,对吧?
    • 你确定它应该是 jQuery("button") 而不是 jQuery("#button")?另外,请尝试在回调函数的最顶部使用 alert()-ing json var。
    • 警报有效,但显示 valor1: undefined 和 valor2 相同。谢谢
    • 问题是 [] --- [{"valor1":"20"},{"valor2":"50"}],但是如果我在 $arr 中删除 []只显示第二个值 {"valor2":"50"}
    • 更新了与您的回调一起使用的答案。只是一个旁注-不要将您的变量称为“valor”(我猜是西班牙语中的“value”)-它可能意味着任何东西。这就像称你的狗为“狗”。很明显,这是某种价值。问题是究竟是什么样的?如果是名字,就叫它“名字”。如果是用户详细信息,请相应地调用它,等等。
    【解决方案2】:
    $index = 1;
    while($row = mysql_fetch_assoc($query)) {
            $key = 'valor'.index;
            $arr[$key] = $row;
            $index++;
        }
    

    这会给您带来内存错误吗?不应该。

    【讨论】:

    • 除非您从查询中获得大量令人难以置信的返回值。
    猜你喜欢
    • 2012-11-09
    • 2015-01-19
    • 2011-09-04
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多