2013-08-25 37 views
3

这里是我的PHP代码PHP JSON响应

function GetTransactionList($data) 
{ 
    // DB transaction 
    $records = array(); 
    while($row = mysql_fetch_array($result)) 
     array_push($records, $row); 

    echo json_encode(array("IsError" => false, "Records" => $records)); 

}

这是从PHP

{ 
    IsError:false, 
    Records:[ 
      {0:1, 
      1:1000, 
      2:0, 
      3:"Peacock India trial payment", 
      4:"2013-08-03", 
      5:1, 
      TransactionID:1, 
      Credit:1000, 
      Debit:0, 
      Reason:"Peacock India trial payment", 
      TransactionDate:"2013-08-03", 
      TransactionByUserID:1 
      }] 
} 

在这里我得到了我的结果,但json_encode在Ajax调用我的JSON响应()方法先对每行进行两次编码,然后按index =>值对设置值,第二次按column_name =>值对进行编码。我想知道它为什么会发生?有什么办法可以减少这种双重工作。我想只有如下方式

{ 
    IsError:false, 
    Records:[ 
      {TransactionID:1, 
      Credit:1000, 
      Debit:0, 
      Reason:"Peacock India trial payment", 
      TransactionDate:"2013-08-03", 
      TransactionByUserID:1 
      }] 
} 

回答

2

不,它不需要,它是mysql_fetch_array,让你既准和数字键JSON响应。
如果只想关联键的功能mysql_fetch_array($result, MYSQL_ASSOC);

+0

根据[mySQL mysql_fetch_array文档](http://php.net/manual/en/function),仅供参考,选项为** MYSQL_ASSOC **,** MYSQL_NUM **和** MYSQL_BOTH ** .mysql取入array.php) – DevlshOne

1

指定它可以使用mysql_fetch_assoc而不是mysql_fetch_array