来自php的JSON解码信息

时间:2015-10-11 18:11:01

标签: javascript php jquery json ajax

我在解码JSON字符串时遇到错误。

ERROR:

Uncaught SyntaxError: Unexpected token {

我的PHP代码:

<?php 

$socket = $_GET["socket"];

$bd = new PDO("mysql:host=localhost;dbname=gestao_utilizadores" , "root" , "");

$getComponentes = $bd->prepare("SELECT * FROM componentes WHERE ( Socket=:socket )");
$getComponentes->bindValue(':socket' , $socket);
$getComponentes->execute();
$resultado = $getComponentes->fetchAll();

For ($i = 0; $i < $getComponentes->rowCount() ; $i++) { 
    $componentes = json_encode(array('tipo' => $resultado[$i]["Tipo"] , 'nome' => $resultado[$i]["Nome"] , 'socket' => $resultado[$i]["Socket"]));
    echo $componentes; 
}   

?>

我的Javascript代码:

$.ajax({
        url: 'compatibilidades.php',
        data: { 
            socket: $("#board option:selected").attr('value') 
        },
        success: function(dadosRecebidos) {
            teste = JSON.parse(dadosRecebidos);
            alert(teste);
        }
    });

错误是在javascript还是PHP上?

1 个答案:

答案 0 :(得分:0)

<?php 

$socket = $_GET["socket"];

$bd = new PDO("mysql:host=localhost;dbname=gestao_utilizadores" , "root" , "");

$getComponentes = $bd->prepare("SELECT * FROM componentes WHERE ( Socket=:socket )");
$getComponentes->bindValue(':socket' , $socket);
$getComponentes->execute();
$resultado = $getComponentes->fetchAll();

$arr = array();

for ($i = 0; $i < $getComponentes->rowCount() ; $i++) { 
    $componentes = array('tipo' => $resultado[$i]["Tipo"] , 'nome' => $resultado[$i]["Nome"] , 'socket' => $resultado[$i]["Socket"]);
    array_push($arr, $componentes);
}   

echo json_encode($arr); 

?>

只输出一次JSON,否则你最终得到几个JSON字符串的输出,比如

{"key1": "value1", "key2": "value2"}{"key3": "value3"}

这是无效的JSON