任何人都可以更好地体验我,在这里发现问题。 我无法调试它,我的var_dump似乎没有因为使用jquery.post()而产生任何影响所以我相信。
我没有显示任何内容。我期待收到一个充满json编码值的li系列。
HTML:
<div id='data'></div>
<form action="">
<input id="nomeInput" type="text" name="nomeInput" value="" autocomplete="false"/>
</form>
<ul id="listaDominios" style="display: none;">
</ul>
js:
$(document).ready(function(){
$('#nomeInput').keypress(function(){
$.post("testeBasico_1.php", {nomeInput : $('#nomeInput').val()}, function(resposta) {
for (var x = 0, tamanhoDados = resposta.nomeDominio.length; x < tamanhoDados; x++){
$('#listaDominios').show();
$('#listaDominios').append('<li>'+resposta.nomeDominio[x]+'</li>');
}
}, "json");
});//end of keypress;
});//end of document ready;
PHP
public function listaDominios(DominioVo $dominioVo)
{
try
{
$stmt = $this->_dbh->prepare("SELECT d.nomeDominio FROM dominio d WHERE d.nomeDominio LIKE ?");
$stmt->bindValue(1,'%' . 'a' . '%', PDO::PARAM_STR);
$stmt->execute();
$resultado = $stmt->fetchAll(PDO::FETCH_OBJ);
return $resultado;
}
catch (PDOException $ex)
{
echo "Erro: " . $ex->getMessage();
}
}
如果这个地方变得困难,我怎么能发现它。这是我的第一次ajax体验,所以我对调试部分感到不舒服。 :■
怀疑:(更新) 我相信问题就在于我试图迭代返回的json。 这是json_encoded的回显格式:
[{"nomeDominio":"aaaa.ka"},{"nomeDominio":"agentesdeexecucao.ka"}]
提前多多感谢, MEM
答案 0 :(得分:1)
由于对象的基础是一个数组,你需要在根级别迭代它,所以你的for
循环应如下所示:
$('#listaDominios').toggle(resposta.length > 0);
for (var x = 0; x < resposta.length; x++){
$('#listaDominios').append('<li>'+resposta[x].nomeDominio+'</li>');
}
或$.each()
路线:
$('#listaDominios').toggle(resposta.length > 0);
$.each(resposta, function() {
$('<li />', { text: this.nomeDominio }).appendTo('#listaDominios');
});
重要的一点是resposta.nomeDominio
不是任何东西,因为响应的根是一个数组,但是resposta.length
将得到长度,所以使用它。此外,由于数组位于根,并且其中的每个对象都具有nomeDominio
属性,您希望resposta[x].nomeDominio
转到当前索引(以获取对象),然后调用.nomeDominio
得到财产。或者,使用this
引用当前对象的$.each()
路由,无论哪种方式都有效。