jquery $.post не работает при перезагрузке текущей страницы

Я пытаюсь скрыть некоторые данные в строке запроса. Я использовал метод $.post, но он не работает:

if (!isset($_POST['sw']) or !isset($_POST['sh']))  
     echo '<script type="text/javascript">
            $.post("index.php",{ sw: $(window).width(), sh: $(window).height() } );
           </script>';

Когда я использую window.location.reload, он работает отлично:

if (!isset($_GET['sw']) or !isset($_GET['sh']))
 echo '<script type="text/javascript">
        window.location.href+="?sw="+$(window).width()+"&sh="+$(window).height();
       </script>';

1 ответ

Решение

Этот метод $.post является ajax-запросом, он, вероятно, делает именно то, что должен, что не перезагрузит страницу, если вы не выполняете перенаправление на стороне сервера. Если вы хотите заменить содержимое страницы ответом на этот вызов ajax, вы можете сделать что-то вроде этого:

$.post("index.php",{ sw: $(window).width(), sh: $(window).height() } ).done(function(data){
   $('#my_target').html(data);
});

Но вам нужно будет убедиться, что ваши данные ответа сформированы таким образом, что имеет смысл загружать их таким образом, либо возвращать фрагмент html, либо кодировать массив в json, либо что угодно, что имеет смысл для того, что вы пытаетесь сделать.

Другие вопросы по тегам