Обновить страницу с данными из $ .post ()

0

Я пытаюсь отправить данные на индексную страницу при нажатии ссылки на этой странице. страница index.php выглядит так:

include "../app/bootstrap.php";
include ("../src/controllers/DisplayContentsController.php");

$data = new DisplayContentsController();
$link = (isset($_POST['link']) ? $_POST['link'] : null);

if ($link != null)
{
    $data->show($twig, $starting_file_path . '/' . $link);
    $starting_file_path = $starting_file_path . '/' . $link;
}
else
{
    $data->show($twig, $starting_file_path);
}

и на загружаемом шаблоне Twig у меня есть следующее:

<script>
    jQuery('.show_content').click(function(e)
    {
        e.preventDefault();

        var href = jQuery(this).attr('href');
        jQuery.post(window.location, { link: href });
    });
</script>

Я хочу перезагрузить страницу с помощью новой ссылки, чтобы она загружала правильный каталог. Но когда я делаю jQuery.post(), отображаемое содержимое не изменяется. Может кто-нибудь помочь мне узнать, что происходит не так, и как я могу это сделать?

  • 0
    Просто чтобы добавить что-то, но запросы на контент должны обрабатываться GET, а изменения, которые не должны выполняться дважды, - POST.
Теги:

1 ответ

1
Лучший ответ

Результат запроса POST будет возвращен в функцию обработчика успеха. Например, вам нужно будет сделать что-то вроде этого:

jQuery('.show_content').click(function(e)
{
    e.preventDefault();

    var href = jQuery(this).attr('href');
    jQuery.post(window.location, { link: href } , function(data){
       //data will have the new HTML after the page posted back. You can use that
       //HTML to load if onto an element on the page. Something like:
       $('#content_result').html(data);           
    });
});

Предполагая, что у вас есть div с "id = content_result" -or что-то вроде that-, которое вы можете использовать для загрузки HTML-кода в него.

Если вы хотите добавить результат к существующему HTML, уже отображаемому внутри #content_result просто выполните:

 $('#content_result').html($('#content_result').html()+data);

Теперь имейте в виду, что это вернет все - полную страницу - и если вы вслепую продолжаете добавлять вещи, вы получите страницу, которая не соответствует допустимому примеру HTML -for, страница с более чем 1 <head>, <body> и т.д. Лучшее, что вам нужно сделать, это извлечь раздел, который вам действительно интересен, и добавить только этот раздел, чтобы вы всегда получали действительный HTML-документ.

jQuery предлагает множество возможностей для выполнения подобных задач.

  • 0
    это сработало. Есть ли способ добавить результаты этого на страницу, чтобы старые данные остались? то есть старое содержимое каталога остается, а новые данные просто добавляются на страницу?
  • 0
    Вы имеете в виду что-то вроде $ ('# content_result'). Append (data)? api.jquery.com/append
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню