jquery自动完成插件 – 获取工作 – fetchAll没有

如果我从服务器端获得这样的东西,从获取:

array(1) { [0]=> array(1) { ["nome"]=> string(7) "aaaa.br" } } [{"nome":"aaaa.br"}] 

上面的json是:

 [{"nome":"aaaa.br"}] 

这个作品:

 parse: function(data) { return $.map(eval('('+data+')'), function(result) { return { data: result, value: result.nome, result: result.nome } }); } 

结果已成功解析。

如果,而不是fetch,我改为fetchAll,转储就像这样(这里只有第一个索引):

 array(65) { [0]=> array(1) { ["nome"]=> object(stdClass)#7 (1) { ["nomeDominio"]=> string(7) "aaaa.br" } } 

上面的json转换:

 string(2632) "[{"nome":{"nomeDominio":"aaaa.br"}} 

这里,结果未成功解析。

所以我认为需要在js方面改变一些事情。 但我绝对无能为力。

更新:nomeDominio来自fetchObj PDO方法,对应于数据库中的列名。 当使用FETCH :: OBJ选项时,使用PDO获取是一种自然的行为。

这个js的php部分是:

 $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; } 

最后:

 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(); } } 

任何建议? MEM

 $comandos = new ComandoController(); $arr = $comandos->recebeNomeDominios($keyword); echo json_encode($arr); class ComandoController { public function recebeNomeDominios($keyword) { $stmt = $this->_dbh->prepare(' SELECT d.nomeDominio as nome FROM dominio WHERE nomeDominio LIKE :keyword '); $stmt->bindParam(':keyword', $keyparam); $keyparam = '%'.str_replace('%', '\\%', $keyword) . '%'; $stmt->execute(); return $stmt->fetchALL(PDO::FETCH_ASSOC); } ... 

如果你返回一个数组(fetch),那么你需要像这样从中收集数据

 var name = data.name; var age = data.age; var gender = data.gender; // Do something with values here 

如果你正在使用fetchAll,这可能会返回一个数组(一个多维数组),你需要迭代它。 从查看$.map看起来就像是在使用jQuery。 像这样迭代多维数组

 jQuery.each(data, function() { name = this.name; age = this.age; gender = this.gender; // Do something with values here });