如果我从服务器端获得这样的东西,那么来自fetch:
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
答案 0 :(得分:1)
$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);
}
...
答案 1 :(得分:0)
如果你返回一个数组(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
});