@Suyano
Новичок

Проблема с запуском php функции через ajax?

Добрый день!

Задача: необходимо перенаправить пользователя на другую страницу при успешном подключении к WebSocket серверу или получении от него каких-либо сообщений. Мне важно это реализовать именно при вызове функции php.

<?php
$ws = true;

function location() {
  header('Location: http://www.example.com/');
}

if($_POST['action'] == 'location') {
  location();
}
?>

<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>

  <?php if($ws == true) : ?>
    <script type="text/javascript">    
     var socket = new WebSocket("ws://xx.xx.xxx.xx:xxxx");
     
    socket.onopen = function() {
      $.ajax({
       url : 'wsajax.php' ,
       method : 'POST' ,
       data : { action : 'location' },
      success : function(resp){
       }
      });
     };
     </script>
  <?php endif; ?>

</body>
</html>


Итог работы: при обновлении страницы происходит подключение к серверу, но никаких перенаправлений не происходит. В чем моя ошибка? P.s wsajax.php это общий файл, в котором есть как php скрипт, так и js
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
colonel
@colonel
Разработчик PHP, Laravel
AJAX работает в другом потоке, ваша страница к нему не имеет отношения, как она перезагрузится?
Вам нужно перенаправлять средствами javascript.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mikaakim
Веб-разработчик ПО
Средствами JS:
window.location.replace('http.google.com')
При ответе от php вы можете передать адрес, закодировав в JSON или прочитать заголовок ответа из ajax и перенаправить пользователя на него функцией выше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы