2011-09-09 170 views
1

我想用.each迭代通過JSON數組

這裏就是我設置陣列

$allRecords= array(); 
    while($row = mysql_fetch_array($result)){ 
     $oneRecord[] = array("orderNo"=>$row['order_no'],"orderDate"=>$row['order_date'],"orderTime"=>$row['order_Time']); 
     array_push(&$allRecords,$oneRecord); 
    } 

    echo json_encode($allRecords); 

這裏的值來獲得JSON數組的值就是我做的jQuery的

$.post("controllers/OrderViewer.controller.php?action=viewOrders",param,function(result){ 
// var data = JSON.parse(result); // I tried this but doesn't work 
// var data= eval(result); // I tried this but doesn't work 

    $.each(result,function(index,v){ 

      alert(index +" "+ v.orderNo); // return undefined for values 
      // what should I write here to reach array element 

    }); 
    }); 

我該寫什麼。每個獲得數組元素

這裏的響應數據結構

Array 
(
[0] => Array 
    (
     [orderNo] => 1 
     [orderDate] => 2011-02-12 
     [orderTime] => 00:00:10 
    ) 

[1] => Array 
    (
     [orderNo] => 2 
     [orderDate] => 2011-02-12 
     [orderTime] => 11:10:00 
    ) 

+0

只要做一個console.log(數據),並看看你的數據對象的結構。 –

+0

有什麼問題? – arnaud576875

+0

這可能是值得剝離你的例子只有$ .each調用與分配給結果變量的對象的JavaScript數組。你可以檢查你的php頁面返回的內容,看看應該看什麼。那時,它純粹是一個JavaScript問題。至於要放入$ .each函數的內容,您可以嘗試result [index] .orderNo。 –

回答

2

如果indexv在您each()循環返回undefined值,則result的值不能什麼你認爲它是。在這裏取得進展的唯一途徑是讓你看看result的實際外觀。

它實際上是一個數組嗎?如果是這樣,那麼陣列中的項目是什麼?他們是你期望的嗎?如果它不是一個數組,它是什麼?

查看result的最佳方法是在each()循環的開始處設置一個斷點,並在調試器中查看result。 Chrome和Safari都帶有內置的調試器,它們需要15分鐘來學習如何設置斷點,然後檢查變量的值,一旦碰到該斷點。 Firefox有一個免費的附加組件(Firebug),它也是一個調試器。 IE有一些工具,您可以使用調試器從MS下載。

+0

它在我看到json,thanx的響應時有效。 – palAlaa