문제

I have a very strange problem when I using ajax in symfony 1.4. I've used the jobeet example (day 18) but it doesn't work

This is my 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>

The jquery script detects characters in the input, when I write 3 or more characters it should load the div with id='per'. Here is my 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));
       }
 }

When I load the page I dont want to see any result. So, when I do a ajax call, I should reload the partial "_buscaPersonas.php" with all results (just for try), but I load the _form.php partial.

This is my partial:

 <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>

I've trying to find where is the problem but I not get it. When I use the button for normal search it works, load the correct partial but whit ajax load other partial.

Please somebody knows what is my error.

thanks

도움이 되었습니까?

해결책

I think this due to the path of your load ajax function:

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

$(this).parents('form').attr('action') is certainly a wrong value. Try this :
url_for('personas/index')

다른 팁

Finally I find the error. I dont know what happen but if I send data with the load function I have and error. So I had to send the data using the url, and is works:)

 if (this.value.length >= 3 || this.value == '')
 { 
   $('#per').load( "<?php echo   url_for('personas/index')?>"+"?query="+this.value);
 }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top