2015-10-16 196 views
1

我正在嘗試將PDO對象轉換爲JavaScript JSON。將PDO對象轉換爲Javascript JSON

這裏是我的代碼:

PHP:

$personArray = array(); 
    $queryResult = < this gets the valid result of a $statement->fetchall(PDO:FETCH_ASSOC) > 

    foreach($queryResult as $p){ 

     $personArray[] = array(
         "Id" => $p["Id"], 
         "Name" => $p["Name"], 
         "Text" => $p["Text"] 
    ); 
    } 

    echo json_encode($personArray); 

請注意,我試圖做json_encode($queryResult);之前,但似乎我不得不改變我的所有陳述我不的enconding不想做。

這裏是我的recieving JS: 功能refreshEntries(){

$.ajax({ 
    url: "< my PHP file >", 
    type: 'POST', 
    success: function(returnPDO){ 

     var obj = JSON.parse(returnPDO); 

     ... 
    } 
}); 

}

的JavaScript,更precide的JSON.parse(returnPDO);是突破點。我每次都收到" Uncaught SyntaxError: Unexpected token a "錯誤消息,我很確定這是來自array(),它位於PHP數組的開頭。

這裏一定有一些故障,但我搞不清楚究竟是什麼。我想我知道錯誤在哪裏,但不知道如何解決。任何幫助?

+0

根據東西和事情,你可能甚至不需要json.parse。有時jquery會自動解析它。嘗試刪除,看看會發生什麼。 –

+1

如果你設置'dataType:「json」',jquery會自動將它解析爲json。使用瀏覽器開發工具查看服務器的完整響應。 – frz3993

+0

如果你有jQueryo,你不需要解析器。 –

回答

1

您已經將您的pdo作爲關聯數組獲取,那麼爲什麼不僅僅是json_encode您的pdo結果呢?

$toReturn = json_encode($queryResult); 
    echo $toReturn; 

另外你還沒有設置你的dataType:到你的ajax調用中的json。

$.ajax({ 
    url: "< my PHP file >", 
    type: 'POST', 
    dataType: 'json', 
    success: function(returnPDO){ 

     var obj = JSON.parse(returnPDO); 

     ... 
    } 
    }); 
1

你的json必須符合規範,它應該是一個沒有特殊字符的utf-8字符串。屬性名稱必須用雙引號和和和包圍......

我建議你得到的一些數據樣本,並提交給https://jsonformatter.curiousconcept.com/這將解析您的JSON,給你一個關於什麼是錯誤的膠水