2014-11-02 38 views
0

我的JSON輸出如下: enter image description here麻煩訪問多維JSON數據

var request = $.ajax({ 
       type: "POST", 
       url: "generateplaylist.php", 
       data: { 
        id: myClassID 
       } 
      }); 
      request.fail(function(jqXHR, textStatus) { 
          alert("Request failed: " + textStatus); 
         }); 
      request.done(function(data) { 
         console.log(data.songartist[1]);}) 

我可以通過改變它的參數來獲取並手動訪問鏈接訪問JSON輸出。每當我嘗試像這樣通過後期訪問,我在console.log行上得到一個未定義的錯誤。我認爲這可能是因爲我有一個Json數組,每個鍵都是它自己的數組,但是一旦離開第一維,我就不那麼好了。我已經嘗試了很多變化

data.songartist 
data[songartist] 
data[songartist][1] 

etcet。

這裏是generateplaylist.php

if(isset($_POST['id'])){ 
     $json = array(
      'success' => false, 
      'songartist' => '', 
      'songname' => '' 
     ); 

     $x = 0; 
     while($row = mysqli_fetch_array($result)) { 
      $songartist[$x] = $row['songartist']; 
      $songname[$x] = $row['songtitle']; 
      $x++; 
     } 

     $json['success']  = true; 
     $json['songartist']  = $songartist; 
     $json['songname']  = $songname; 

     echo json_encode($json); 
} 
+0

你可以顯示'generateplaylist.php'的代碼。 – Barry 2014-11-02 09:58:52

+0

更新了代碼,修剪了一點點,我有多個Ajax請求運行,雖然此代碼設置與其餘的相同,除了事實上我存儲數組的鍵而不是單個值。 – Triston 2014-11-02 10:03:27

回答

0

你應該得到他用下面的jQuery Ajax請求

$.ajax({ 
    type: "POST", 
    url: "generateplaylist.php", 
    dataType: "json", // set explicit expected format as json 
    data: { 
     id: myClassID 
    } 
}) 
.success(function(data) { 
    console.log(data.songartist[1]); 
}) 
.error(function (jqXHR, textStatus) { 
    alert("Request failed: " + textStatus); 
}); 

數據包含一個元素稱爲songartist數據的代碼而這種元素的數組字符串,因此可以使用data.songartist[1]來引用它,以獲取數組中的第一個字符串。

提示 在您的PHP中,您可以添加項目而不指定索引。你可以重寫這個循環的代碼爲

$songartist = []; // define array 
$songname = []; // define array 
while($row = mysqli_fetch_array($result)) { 
    $songartist[] = $row['songartist']; 
    $songname[] = $row['songtitle']; 
} 
+0

很好的瞭解語法,寫得很清晰 - 我很確定這會現在工作,我得到一個錯誤,而不是未定義的。我不斷收到'解析錯誤',這可能是我停止在請求中包含dataType:「json」的原因。我假設,一旦我修復了我的PHP代碼解析出適當的JSON(不知道爲什麼它不),它會運行。謝謝! 編輯:並歡呼陣列 – Triston 2014-11-02 10:15:16

+0

大聲笑,所以事實證明,我有一個非UTF-8字符在我的歌曲URL的一個導致解析錯誤,也是代碼沒有運行,直到我宣佈數據類型。小東西,很高興我得到了這個結論。不得不做很多小改動來適應它,我應該已經完成​​了 – Triston 2014-11-02 10:47:17

+0

我很高興地看到,現在一切都在爲你工作。 – Barry 2014-11-02 10:49:28