Проблема с AJAX с использованием Symfony 1.4 - PullRequest
0 голосов
/ 26 июля 2011

У меня очень странная проблема при использовании ajax в symfony 1.4.Я использовал пример 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 или более символов, он должен загружать div с id = 'per'.Вот мой 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 загружает другой фрагмент.

Пожалуйста, кто-нибудь знает, в чем моя ошибка.

спасибо

Ответы [ 2 ]

0 голосов
/ 26 июля 2011

Наконец-то я нахожу ошибку. Я не знаю, что произойдет, но если я отправлю данные с функцией загрузки, у меня есть и ошибка. Поэтому мне пришлось отправить данные с помощью URL-адреса, и это работает :)

 if (this.value.length >= 3 || this.value == '')
 { 
   $('#per').load( "<?php echo   url_for('personas/index')?>"+"?query="+this.value);
 }
0 голосов
/ 26 июля 2011

Я думаю, что это из-за пути вашей загрузки ajax-функции:

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

$ (this) .parents ('form'). Attr ('action'), безусловно, неверное значение.Попробуйте это:
url_for ('персона / индекс')

...