Аякс пагинация в Symfony 1.4 - PullRequest
2 голосов
/ 29 октября 2011

Я использую Symfony 1.4 и пытаюсь разбить на страницы результаты поиска с помощью вызовов Ajax, но у меня возникают трудности.

Мой ajax-вызов сделан для действия (executeGetList), где я передаю параметр страницы.Вот как я выполняю вызов ajax:

var url = "<?php echo url_for("genre/getList"); ?>";
function loadPage(page)
{
    $.ajax({
        url: url+"?page="+page,
        type: 'POST',
        dataType: 'html',
        timeout: 4000,
        beforeSend: function(){
            $('#loading').show();
        },
        complete: function(){
            $('#loading').hide();
        },
        error: function(xhr, textStatus, errorThrown){
            msg = "Error " + errorThrown;
            alert(msg);
        },
        success: function(data){
            $("#datasongs").load(data, "", function(response, status, xhr) {
                alert ("status is: " + status); 
            });
        }
    });
}    

executeGetList извлекает некоторые данные, устанавливает пейджер (sfDoctrinePager) и возвращает частичный рендер:функция обратного вызова success, я получаю отправленные данные, и это именно то, что я хочу.Однако, когда я выполняю функцию .load() jquery, я получаю ошибку 404.

Ошибка вызвана тем, что Symfony пытается найти маршрут, который начинается с HTML, сгенерированного вызовом ajax.Возвращаемые данные начинаются с

<table><thead><tr

Журналы Symfony:

Oct 28 23:32:05 symfony [info] {sfWebResponse} Send status "HTTP/1.1 200 OK"
Oct 28 23:32:05 symfony [info] {sfWebResponse} Send header "Content-Type: text/html; charset=utf-8"
Oct 28 23:32:05 symfony [info] {sfWebDebugLogger} Configuration 12.69 ms (8)
Oct 28 23:32:05 symfony [info] {sfWebDebugLogger} Factories 58.78 ms (1)
Oct 28 23:32:05 symfony [info] {sfWebDebugLogger} Action "genre/getList" 705.05 ms (1)
Oct 28 23:32:05 symfony [info] {sfWebDebugLogger} Database (Doctrine) 0.18 ms (24)
Oct 28 23:32:05 symfony [info] {sfWebDebugLogger} Partial "song/_listSongSearchLite" 222.21 ms (1)
Oct 28 23:32:05 symfony [info] {sfWebDebugLogger} View "None" for "genre/getList" 0.02 ms (1)
Oct 28 23:32:05 symfony [info] {sfWebResponse} Send content (8801 o)
Oct 28 23:32:07 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_signin" (/guard/login)
Oct 28 23:32:07 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_signout" (/guard/logout)
Oct 28 23:32:07 symfony [info] {sfPatternRouting} Connect sfRoute "apply" (/user/new)
Oct 28 23:32:07 symfony [info] {sfPatternRouting} Connect sfRoute "reset" (/user/password-reset)
Oct 28 23:32:07 symfony [info] {sfPatternRouting} Connect sfRoute "resetRequest" (/user/reset-request)
Oct 28 23:32:07 symfony [info] {sfPatternRouting} Connect sfRoute "resetCancel" (/user/reset-cancel)
Oct 28 23:32:07 symfony [info] {sfPatternRouting} Connect sfRoute "validate" (/user/confirm/:validate)
Oct 28 23:32:07 symfony [info] {sfPatternRouting} Connect sfRoute "settings" (/user/settings)
Oct 28 23:32:07 symfony [info] {sfPatternRouting} Match route "default_index" (/:module) for /<table><thead><tr with parameters array (  'module' => '<table><thead><tr',  'action' => 'index',)
Oct 28 23:32:08 symfony [info] {sfFrontWebController} Action "tabletheadtr/index" does not exist
Oct 28 23:32:08 symfony [err] {sfError404Exception} Action "tabletheadtr/index" does not exist.
Oct 28 23:32:08 symfony [info] {sfWebResponse} Send status "HTTP/1.1 404 Not Found"
Oct 28 23:32:08 symfony [info] {sfWebResponse} Send header "Content-Type: text/html; charset=utf-8"
Oct 28 23:32:08 symfony [info] {sfWebDebugLogger} Configuration 8.27 ms (5)
Oct 28 23:32:08 symfony [info] {sfWebDebugLogger} Factories 63.62 ms (1)

Любая помощь будет оценена.

1 Ответ

3 голосов
/ 29 октября 2011

В коде у вас есть:

success: function(data){
$("#datasongs").load(data, "", function(response, status, xhr) {
   alert ("status is: " + status);  
});

, где вы передаете данные, возвращенные из .ajax() в качестве URL для нового запроса .load(). Не кажется правильным.

.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] )

Похоже, вы пытаетесь поместить данные, возвращенные внутрь $("#datasongs"). Для этого вы используете функцию .html(), а не .load().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...