2016-03-04 24 views
2

在瀏覽器的控制檯我有這樣的:enter image description here接入多JSONs

這是由這個AJAX返回:

function displayFiles(){ 
var classElements = document.querySelectorAll("table.folders-list tr.ui-selected td span"); 
var csrf = $('input[name=_token]').val(); 
for(var x = 0;x < classElements.length;x++){ 
    var result; 
    result = classElements[x].innerHTML; 
    $.ajax({ 
     async: false,      
     method: 'POST', 
     dataType: 'json', 
     url: '../public/getfiles', 
     data: { 'folder': result, "_token": csrf }, 
     success: function(data) { 
     } 
    }); 
}; 
} 

我想訪問它們。試過console.log(data[0].filename);但出現錯誤。 當有一個JSON我得到TypeError: data[0] is undefined,而如果有多個(就像在圖片中)沒有返回。 這是PHP函數發送的對象:

public function getFiles() { 
    $folder = $_POST['folder']; 
    $userid = Auth::id(); 
    $query = File::orderBy('created_at', 'desc')->where('userid', $userid)->where('folder', $folder)->get(); 
    // foreach for many result returned by $query 
    foreach($query as $result){ 
     $arr = array(); 
     $arr['filename'] = $result->filename; 
     $arr['id'] = $result->fileid; 
     $arr['size'] = $result->conv_filesize; 
     echo json_encode($arr); 
    }  
} 
+1

你得到了什麼錯誤?請儘量使用您嘗試的代碼和它提供的確切消息儘可能具體。 – IMSoP

+0

@IMSoP更新了問題 – Alex

+0

您發送了兩個不同的JSONObject?爲什麼?你可以發送JSONArray和那些JSONObject嗎?順便說一句,哪種編程語言用於服務器端? PHP? –

回答

3

好像你是把多個JSON字符串只是彼此相鄰。這反過來不是有效的JSON。

您的輸出看起來像{"x": 1}{"y": 2},它需要是[{"x": 1},{"y": 2}]

嘗試在一個單一的呼叫你所有的數據輸出到json_encode()

public function getFiles() { 
    $folder = $_POST['folder']; 
    $userid = Auth::id(); 
    $query = File::orderBy('created_at', 'desc')->where('userid', $userid)->where('folder', $folder)->get(); 
    // foreach for many result returned by $query 
    $json = array(); 
    foreach($query as $result){ 
     $arr = array(); 
     $arr['filename'] = $result->filename; 
     $arr['id'] = $result->fileid; 
     $arr['size'] = $result->conv_filesize; 
     $json[] = $arr; 
    }  
    echo json_encode($json); 
} 

你也可以嘗試一個JSON驗證。 ;)

+0

'json [] = $ arr;''給出了一個意外的= =]' – Alex

+0

你忘記了'$'在json []前面;這可能是我的問題的解決方案 – Alex

+0

呃,是的。修正了。謝謝 – fboes