2015-10-16 193 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,给你一个关于什么是错误的胶水