AJAX форма не работает

224
28 августа 2017, 08:50

На помощь! Убил 8 часов, результата - 0. Есть код:

<script type="text/javascript">
    var tt = 0
    var d = new Date();
    var n = d.getTime()/1000;
    var s = <?php echo $_SERVER['REQUEST_TIME']; ?>;
    var lefin = (n - s)/60/60;
    if (lefin >= -0.1) {
        var tt = 1
    }
    if (lefin < -0.1) {
        var tt = 2
    }
    if (tt == 1) {
        function ajaxCall(tt) {
            alert("To AJAX: CHECK "+tt);
                jQuery.ajax({
                type: "POST",
                url: "wp-content/plugins/UFR/script.php",
                dataType: 'json',
                data: "param="+10,
                success: function(response)
                { alert("yoyo")}
            }
        );
};
ajaxCall(tt);
    }
    console.log(n);
    console.log(lefin);
    console.log(tt);
</script>

и файл со скриптом:

<?php
$timedf = json_decode($_POST['param']);
?>

По идеи теперь на моей странице должна стать доступна переменная $timedf - но все тщетно. Кто знает в чем дело, помогите

Answer 1

Во-первых - ajax в wordpress работает по определенным правилам. Сейчас у вас прямые запросы на файл обработчик, но в вордпресс все ajax запросы должны направляться на /wp-admin/admin-ajax.php, а обработчики подключаются к хукам. Тема ajax в вордпресс достаточно большая, чтобы здесь ее описывать, поэтому изучите эту статью, чтобы правильно писать рабочий поддерживаемый код.

Если уж хотите, чтобы сейчас работал свой код, попробуйте изменить функцию таким образом:

function ajaxCall(tt) {
    alert("To AJAX: CHECK " + tt);
    jQuery.ajax({
        type: "POST",
        url: "/wp-content/plugins/UFR/script.php",
        dataType: 'json',
        data: {
          param: 10
        },
        success: function(response) { 
          console.log(response)
        }
    });
}

И обращайте внимание на читабельность кода и парность скобок

Answer 2

Во-первых проверь, что подключена библиотека JQuery. Во-вторых в твоём примере, ты организуешь работу веб-приложения с помощью Ajax, это технология асинхронного взаимодействия с сервером, т.е. файл где расположен js скрипт это клиент. Файл script.php это серверный скрипт, по идее там должна быть прописана логика, что делать с данными переданными с клиента.

В твоем примере, ты отсылаешь Ajax запрос в серверный скрипт, скрипт должен что-то там сделать, обработать полученные данные и вернуть результат, который можно будет получить в том месте, где у тебя прописано: alert("yoyo")

<?php 
$timedf = json_decode($_POST['param']);
// т.е. клиент ждёт ответ в json, конвертируем ответ в JSON и выводим результат
echo json_encode($timedf);
?>
READ ALSO
Вывод данных на экран с базы

Вывод данных на экран с базы

Пытаюсь освоить PHP и естественно возникают определенные трудностиВот сам код:

222
Не логинит в систему (cookie) [дубликат]

Не логинит в систему (cookie) [дубликат]

На данный вопрос уже ответили:

265
Обработать массив для занесения в БД

Обработать массив для занесения в БД

Доброго времени суток, есть такой массив:

190