jquery autocomplete plugin – fetch works – 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. Но я абсолютно не знаю.

UPDATE: nomeDominio – это метод PDO fetchObj и соответствует имени столбца в базе данных. Это естественное поведение для извлечения с PDO, когда используется опция FETCH :: OBJ.

Часть php этого js:

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

Если вы вернете один массив (выборка), вам необходимо собрать данные из него

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