2014-02-27 133 views
0

我試圖上傳一個文件和一些數據到我的服務器,使用Angular JS通過AJAX發出一個POST請求,而我的後端是Laravel 4(不是那麼重要這裏很多)。PHP處理JSON ...奇怪的行爲

現在我成功地將這些數據傳遞給我的控制器。我能做到以下幾點:

$data = Input::all(); 
return $data; 

console.log數據出來的時候,響應成功,它產生:

Object { 
    imageData: "{"title":"Some Title","owner":"Owner Name","source":"Source Name"}", 
    file: Object 
} 

好了,所以這就是我想要的,但更多的specifcically我想要imageData內的東西。

$data = Input::all(); 

    $imageData = $data['imageData']; 

    return $imageData; 

好了,所以console.log這回道:

Object {title: "Some Title", owner: "Owner Name", source: "Source Name"} 

大 - 但現在可以搶的各個元素如下這種趨勢:

$data = Input::all(); 

    $imageData = $data['imageData']; 

    $title = $imageData['title']; 

    return $title; 

都能跟得上:500 (Internal Server Error)。同樣的情況,所以我嘗試訪問它作爲一個對象($title = $imageData->title

所以我怎麼抓住的還有裏面的東西?

+0

檢查您的錯誤記錄以查看500錯誤的真正含義。 –

+0

你可以print_r($ imageData)只是看看它看起來像從php – jx12345

+0

@JonathanKuhn異常'錯誤異常'與消息'非法字符串偏移'標題'' - 沒有別的! – Alias

回答

4

您的問題是$imageData是一個字符串。該字符串恰好包含JSON ,但它仍然是一個字符串,你可以告訴它的開始和結尾是雙引號",如果它實際上是JSON,則不會是這種情況。

問題很可能是你'將JSON傳遞給某些東西,然後將數據轉換爲JSON。

+1

啊,是的,我認爲你是對的!經過一番研究,一個'json_decode($ data ['imageData'],true)'似乎可以完成這項工作。助教。 – Alias