如果我有從服務器端這樣的事情,從獲取: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
}
});
}
結果被成功解析。
如果,代替取,我更改爲使用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進行提取的自然行爲。
的這個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
了PHP的'PDO'擴展這是一起選擇中...? – 2010-09-17 15:36:43
旁註。爲什麼你必須「手動」解析/評估數據?您可以在請求的options對象中將dataType設置爲'json',jquery處理字符串 - > javascript轉換。 – VolkerK 2010-09-17 15:44:29
這兩個php數組已經在結構上有所不同。 fetchAll版本中的'nomeDominio' thingy來自哪裏?您可能想向我們展示php代碼... – VolkerK 2010-09-17 15:54:23