2013-04-30 213 views
1

我有這個PHP數組:多維數組PHP到JSON陣列

Array 
(
    [messages] => Array 
     (
      [0] => Array 
       (
        [sender] => 17 
        [receiver] => 4 
        [message] => TEST 2 
        [timestamp] => 1367200891 
        [read] => 0 
       ) 

      [1] => Array 
       (
        [sender] => 17 
        [receiver] => 4 
        [message] => TEST 1 
        [timestamp] => 1367197661 
        [read] => 0 
       ) 

     ) 

    [new_messages] => 2 
) 

它得到通過Ajax請求檢索,使用json_encode()在PHP中輸出。

function getMessages(rec){ 
var nmsg = $.ajax({ 
     type: "GET", 
     async: true, 
     url: "/ps/getUserMessages.php", 
     data: {'u':rec,'s00':s00,'n01':n01,'t02':t02}  
    }); 
    nmsg.done(function(data) { 
     var json = JSON.parse(data); 
     if (typeof json.messages[0].message !== 'undefined') { 
      printMessage(json); 
     } 
    }); 
} 

而作爲printMessage()功能,例如,我需要做的是這樣的:對於值的每個陣列

loop(){ 
    $("#elem").append(
      '<div>Sender: '+arrayOfValues.sender+'</div>' 
     +'<div>Message: '+arrayOfValues.message+'</div>' 
    ); 
} 

我試過jQuery $.each()for()我找到了一些例子,但我無法去工作。

+1

使用序列化()和反序列化()在php和js之間傳遞數組,然後再輕鬆地返回。或者你可以在php頁面後面的代碼中使用json_encode()。然後將其傳回給您的ajax函數,然後可以將其轉儲到可以發佈和json解碼的文本框中,或者也可以在json中解碼,並且無論哪種方式獲取數組都可以正常工作。 – Dave 2013-04-30 07:20:18

+0

@Dave我認爲這個問題不在編碼範圍內,而是通過訪問收到的結果。 – Sirko 2013-04-30 07:24:42

+0

沒有看到輸出到PHP的位置,然後從他的代碼看起來像他純粹試圖在JS中處理它。 – Dave 2013-04-30 07:26:26

回答

0

像這樣的東西應該工作:

function printMessage(data) { 
    for(var i=0; i<data.messages.length; i++) { 
    $("#elem").append(
     '<div>Sender: ' + data.messages[i].sender + '</div>' 
     +'<div>Message: ' + data.messages[i].message+ '</div>' 
    ); 
    } 
} 
3

如果你想遍歷給定結構,你應該使用使用以下內容作爲printMessage

function printMessage(json){ 
    for (var i in json.messages) { 
     var currentMessage = json.messages[i]; 

     $("#elem").append(
      '<div>Sender: '+currentMessage.sender+'</div>' 
     +'<div>Message: '+currentMessage.message+'</div>' 
     ); 
    } 

} 
+4

不要使用'for(var i in ...)'作爲數組。這是爲了'物體'而沒有別的。 – Andreas 2013-04-30 07:23:18

+0

所以這個答案是適合這種情況的解決方案(參考:http://www.w3schools.com/js/js_loop_for.asp) – casraf 2013-04-30 07:29:15

+0

@henasraf更好的使用[MDN](https://developer.mozilla.org/docs/JavaScript)作爲參考而不是w3schools。爲什麼?看看[w3fools.com](http://w3fools.com/) - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/for – Andreas 2013-04-30 07:33:22