Вход

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


Glebiys
20.08.2018, 10:41
Добрый день!

Задача: необходимо перенаправить пользователя на другую страницу при успешном подключении к 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>

Итог работы: при обновлении страницы происходит подключение к серверу, но никаких перенаправлений не происходит. В чем моя ошибка?

laimas
20.08.2018, 12:43
роисходит подключение к серверу, но никаких перенаправлений не происходит

Потому, что запрос асинхронный и ответ сервера приходит вот сюда success : function(resp). Делайте перенаправление средствами JS после ответа сервера. Собственно зачем вообще в таком случае Ajax?

Glebiys
20.08.2018, 12:59
Помимо перенаправления мне нужно еще добавлять записи в БД. Я понял, что вызвав функцию я смогу только добавить данные в БД, а делать перенаправление уже через JS.

laimas
20.08.2018, 13:21
Помимо перенаправления мне нужно еще добавлять записи в БД.

А что без Ajax этого нельзя сделать? Если не предполагается диалога с сервером, то он не к чему.