Использование jQuery's ajax get request с параметрами, возвращающими содержимое страницы - PullRequest
0 голосов
/ 23 мая 2010

Я пытаюсь использовать функцию get в jQuery для вызова моего php-скрипта. Скрипт php возвращает переменную, содержащую встроенный шаблон основного содержимого моей страницы, за исключением моего статического верхнего / нижнего колонтитула.

Я хотел бы использовать возвращенный контент для замены "старого" контента страницы без перезагрузки страницы. Кто-нибудь может указать мне правильное направление относительно того, где я иду не так? Мой код выглядит следующим образом ...

JQuery:

function getData(time, type) {
     $.ajax({
            type: "GET",
            url: "getData.php",
            data: "time=" + time + "&type=" + type,
            success: function(data){
               $('#pageContent').fadeOut("slow");
               $('#pageContent').html(data);
               $('#pageContent').fadeIn("slow");
     }
    });
    return false;
}

getData.php (перефразировать):

    ....

    $time = empty($_GET['time']) ? '' : $_GET['time'];
    $type = empty($_GET['type']) ? '' : $_GET['type'];
    echo getData($time, $type);

    function getData($time, $type)
    ......
        .....
            $tmpl = new Template();
            $tmpl->time= $time;
            $tmpl->type = $type;
            $builtpage = $tmpl->build('index.tmpl');
            return $builtpage;
        .....
    ......

Вызов функции jQuery:

<a href="#" onclick="getData('<?php print $tmpl->time; ?>', 'Orange')">Orange</a>
<a href="#" onclick="getData('<?php print $tmpl->time; ?>', 'Apple')">Apple</a>
<a href="#" onclick="getData('<?php print $tmpl->time; ?>', 'Banana')">Banana</a>

Когда я нажимаю любую ссылку, кажется, что ajax работает нормально, и страница отказывается перезагружаться, но содержимое все равно остается неизменным ... Кто-нибудь случайно знает, что случилось?

Ответы [ 2 ]

4 голосов
/ 23 мая 2010

Сначала в функции success, убедитесь, что вы получаете то, что ищете:

success: function(data){
  alert(data);
}

Также в php-файле попробуйте поместить это поверх скрипта:

header("Content-Type: text/html");

И попробуйте изменить свой код, например:

success: function(data){
  $('#pageContent').html(''); // remove what was before
  $('#pageContent').fadeOut("slow");
  $('#pageContent').html(data);
  $('#pageContent').fadeIn("slow");
}
1 голос
/ 23 мая 2010

Ajax не будет работать нормально:

<a href="#" onclick="getData("<?php print $tmpl->time; ?>", "Orange")">Orange</a>
                             ^
                             End of attribute value here

Используйте валидатор и правильно вкладывайте ваши цитаты (переключаясь между " и ' или используя объекты).

...