0

当我在 symfony 1.4 中使用 ajax 时,我遇到了一个非常奇怪的问题。我使用了 jobeet 示例(第 18 天),但它不起作用

这是我的 indexSuccess.php

<script type="text/javascript" >

$(document).ready(function(){

$('#buscador').keyup(function(key)
{
       if (this.value.length >= 3 || this.value == '')
       {
           $('#per').load( $(this).parents('form').attr('action'),
                        { query: this.value + '*' });
       }
   });
});
</script>

<h1>Lista de personas</h1>

 <p>Busque o cree registros de personas en el sistema (Estudiantes, funcionarios,  docentes).</p>

<form action="<?php echo url_for('personas/index')?>">
<table>
    <tr>
        <td><input type="text" name="buscar" id="buscador"/></td>
        <td><a href="<?php echo url_for('personas/index')?>"><img src="/images/iconos/Search.png"/></a></td>
    </tr>
</table>
</form>
<p style="font-size: 11px;color: gray;">Digite un nombre, apellido o número de identificación para buscar</p>

<div class="per" id="per">
<?php echo include_partial('personas/buscaPersonas',array('personass'=>$personass)); ?>
</div>

jquery 脚本检测输入中的字符,当我写 3 个或更多字符时,它应该加载 id='per' 的 div。这是我的personasAction.class.php

public function executeIndex(sfWebRequest $request)
{

 $this->personass = array();

 if($request->isXmlHttpRequest())
       {    
            $this->personass = $this->getRoute()->getObjects();
            return $this->renderPartial('personas/buscaPersonas', array('personass'=> $personass));
       }
 }

当我加载页面时,我不想看到任何结果。因此,当我进行 ajax 调用时,我应该重新加载包含所有结果的部分“_buscaPersonas.php”(仅供尝试),但我加载了 _form.php 部分。

这是我的部分:

 <table>
 <?php foreach($personass as $personas): ?>
 <tr>
 <td colspan="5" class="tituloTD"><?php echo $personas->getNombre(); ?></td>
 </tr>
 <tr>
 <th>Numero identificación: </th><td><?php echo $personas->getNumeroid() ?></td>
 <th>Email: </th><td><?php echo $personas->getEmail(); ?></td>
 <td><a href="<?php echo url_for('personas/edit?id='.$personas->getId()) ?>"> <img src="/images/iconos/editar.png"/></a></td>
    </tr>
        <?php endforeach; ?>
   </table>

我试图找出问题出在哪里,但我不明白。当我使用该按钮进行正常搜索时,它可以工作,加载正确的部分,但 ajax 加载其他部分。

请有人知道我的错误是什么。

谢谢

4

2 回答 2

0

我认为这是由于您的加载 ajax 函数的路径:

       $('#per').load( $(this).parents('form').attr('action'),
                    { query: this.value + '*' });

$(this).parents('form').attr('action') 肯定是一个错误的值。试试这个:
url_for('personas/index')

于 2011-07-26T10:27:21.590 回答
0

最后我发现了错误。我不知道会发生什么,但如果我使用加载功能发送数据我有错误。所以我不得不使用 url 发送数据,并且有效:)

 if (this.value.length >= 3 || this.value == '')
 { 
   $('#per').load( "<?php echo   url_for('personas/index')?>"+"?query="+this.value);
 }
于 2011-07-26T16:58:14.627 回答