发现错误 - 混合:php数据对象(获取对象),json和jquery.post()

时间:2010-08-27 11:14:39

标签: jquery json pdo

任何人都可以更好地体验我,在这里发现问题。 我无法调试它,我的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

1 个答案:

答案 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()路由,无论哪种方式都有效。