Я пытаюсь отправить данные на индексную страницу при нажатии ссылки на этой странице. страница 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()
, отображаемое содержимое не изменяется. Может кто-нибудь помочь мне узнать, что происходит не так, и как я могу это сделать?
Результат запроса 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 предлагает множество возможностей для выполнения подобных задач.