Si j'ai quelque chose comme ça du côté du serveur, d'un ira chercherjquery plugin autocomplete - chercher des œuvres - fetchAll ne
array(1) { [0]=> array(1) { ["nome"]=> string(7) "aaaa.br" } } [{"nome":"aaaa.br"}]
Le JSON de ce qui précède est:
[{"nome":"aaaa.br"}]
Cela fonctionne:
parse: function(data) {
return $.map(eval('('+data+')'), function(result) {
return {
data: result,
value: result.nome,
result: result.nome
}
});
}
Le résultat est analysé avec succès.
Si, au lieu de chercher, je change de fetchAll, la décharge est comme ça (ici que le premier indice comme exemple):
array(65) { [0]=> array(1) { ["nome"]=> object(stdClass)#7 (1) { ["nomeDominio"]=> string(7) "aaaa.br" } }
La conversion JSON de ce qui précède:
string(2632) "[{"nome":{"nomeDominio":"aaaa.br"}}
Ici, le résultat n'est pas analysé avec succès.
Donc, je crois que quelque chose doit être changé du côté js. Mais je suis absolument désemparé.
MISE À JOUR: nomeDominio provient de la méthode PDO fetchObj et correspond au nom de la colonne dans la base de données. C'est un comportement naturel pour récupérer avec PDO lorsque l'option FETCH :: OBJ est utilisée.
La partie php de cette js est:
$keyword = addslashes($_GET["q"]);
$comandos = new ComandoController();
$arr = $comandos->recebeNomeDominios($keyword);
if(is_array($arr))
{
echo json_encode($arr);
}
public function recebeNomeDominios($keyword)
{
$DominioDao = new DominioDao();
$objecto = $DominioDao->recebeNomeDominios($keyword);
return $this->jsonArray($objecto);
}
private function jsonArray($objecto)
{
$json = array();
if(isset($objecto) && !empty($objecto))
{
foreach($objecto as $obj)
{
$json[] = array('nome' => $obj);
}
}
return $json;
}
Enfin:
public function recebeNomeDominios($keyword)
{
try
{
$stmt = $this->_dbh->prepare("SELECT d.nomeDominio FROM dominio d WHERE d.nomeDominio LIKE '%".$keyword."%'");
$stmt->execute();
$resultado = $stmt->fetch(PDO::FETCH_OBJ);
return $resultado;
}
catch (PDOException $ex)
{
echo "Erro: " . $ex->getMessage();
}
}
Un conseil? MEM
Est-ce conjointement avec 'l'extension PDO' PHP ...? –
note de côté. Pourquoi devez-vous analyser/évaluer les données "manuellement"? Vous pouvez définir le paramètre dataType sur 'json' dans votre objet d'options pour la requête et jquery gère la conversion chaîne-> javascript. – VolkerK
Les deux tableaux php sont déjà structurellement différents. D'où vient cette chose 'nomeDominio' dans la version de fetchAll? Vous voudrez peut-être nous montrer le code php ... – VolkerK