Передача JavaScript-переменной в PHP с помощью неопределенного индекса Ajax Echo - PullRequest
0 голосов
/ 28 июня 2018

Я свернул фрагменты кода, чтобы показать только необходимый код, а URL-адрес файла на стороне сервера фактически связан с URL-адресом на моем сервере.


ФАЙЛ HTML

<head>
    <script>
        var btid = 1;
        $.ajax({
            url: "serverSide.php",
            method: "POST",
            data: { "btid": btid }
        });
    </script>
</head>
<body>
    <?php include("serverSide.php"); ?>
</body>

serverSide FILE

<?php
    $btid = $_POST['btid'];
    echo($btid);
?>

ОПИСАНИЕ

Итак, когда загружается страница, запускается код javascript. Он создает переменную с именем btid, равной 1. Затем эта переменная отправляется в файл на моем сервере, который является файлом php. Я хочу повторить эту переменную через php. Но когда я загружаю страницу, я получаю журнал ошибок, в котором говорится, что код $btid = $_POST['btid']; имеет Undefined Index.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Когда вы используете PHP include как в <?php include("serverSide.php"); ?> PHP выполнит код для включаемого файла. Это то, что вызывает вашу ошибку, когда код сначала оценивается, у него нет $_POST['btid'], потому что вы еще не вызвали его.

Ваш javascript будет работать при загрузке страницы и правильно выполнять вызов ajax, но вы нигде не используете ответ. Чтобы сохранить ответ от вызова Ajax, вам нужно добавить обработчик успеха.

Если я понял, что вы пытаетесь правильно, ваш код должен выглядеть примерно так:

ФАЙЛ HTML

<head>

</head>
<body>
    <div id="response"></div>

    <script>
        var btid = 1;
        $.ajax({
            url: "serverSide.php",
            method: "POST",
            data: { "btid": btid },
            success: function(res) {
                $('#response').text(res);
            }
        });
    </script>
</body>

Что мы делаем, это делаем вызов ajax, и, когда вызов успешен, мы присваиваем возвращаемое значение в качестве содержимого div. Кроме того, я переключил тег script на конец тела, потому что мы должны быть уверены, что весь документ загружен, прежде чем что-либо менять (могло бы использоваться $( document ).ready()).

0 голосов
/ 28 июня 2018

Я не думаю, что ваш код будет работать так, как задумано. Вы используете include("serverSide.php"); в теле HTML, но он никогда не будет иметь значений $_POST, если вы не публикуете form.

Ваш ajax вызов ничего не делает с возвращаемым значением.

Я думаю, что вы должны удалить include("serverSide.php"); из тела вашего HTML (он не имеет смысла в текущем воплощении) и использовать возвращенное значение вашего вызова ajax, чтобы поместить значение btid в HTML (если вы этого хотите).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...