Попытка опубликовать переменную javascript в файле php с помощью метода ajax: POST, но получить неопределенный индекс в массиве $ POST в файле php - PullRequest
0 голосов
/ 28 августа 2018

У меня есть php файл с каталогом «JqueryPHP / HighestBid.php». Все, что я хочу сделать, это иметь возможность публиковать переменные javascript из одного файла "views / AuctionPage.php" в другой файл "JqueryPHP / HighestBid.php".

Затем я хочу отобразить значение из «JqueryPHP / HighestBid.php» в теги span с идентификатором «price» в «views / AuctionPage.php».

Проблема в том, что когда я загружаю страницу "views / AuctionPage.php", она показывает мне предупреждение с возвращенным значением "hi", но где текст должен выводиться между тегами span, это говорит мне, что индекс в моем массиве $ POST не определен.

enter image description here

enter image description here

    //JS views/AuctionPage.php
    
    <script>
   $(document).ready(function() {
      var auc = "hi";
  $.ajax({
    url: "JqueryPHP/HighestBid.php",
    method: "POST",
    data: {'auctionid': auc },
    success: function (result) {
        alert("result: " + result);
    }
});
});

    
    </script>
    
    
    <script type="text/javascript">
		$(document).ready(function() {
			setInterval(function () {
				$('#price').load('JqueryPHP/HighestBid.php')
			}, 333);
		});
                
              </script>  
//HTML views/AuctionPage.php

<h4 class="price">Highest bid : <span id="price"></span></h4>


   
 //PHP FILE "JqueryPHP/HighestBid.php"

<?php
  $auctionid = $_POST['auctionid'];
  echo $auctionid;
?>

Когда я избавляюсь от массива $ POST в «JqueryPHP / HighestBid.php» и просто назначаю auctionid с обычной строкой.

     <?php
  $auctionid = "hi";
  echo $auctionid;
?>

текст выводится между тегами span, как и предполагалось, поэтому у меня возникла проблема с переносом переменных на другую страницу, и я понятия не имею, почему. Я пробовал много способов заставить это работать, следуя примерам переполнения стека, но безуспешно.

enter image description here

1 Ответ

0 голосов
/ 28 августа 2018

Эта строка:

$('#price').load('JqueryPHP/HighestBid.php')

загружает скрипт JqueryPHP/HighestBid.php, используя GET, и это еще один, полностью независимый запрос от вашего AJAX, поэтому суперглобальный $_POST пуст. Вам нужно изменить span внутри success функции вашего вызова AJAX:

$.ajax({
    url: "JqueryPHP/HighestBid.php",
    method: "POST",
    data: {'auctionid': auc },
    success: function (result) {
        // alert("result: " + result);
        $('#price').html(result);
    }
});

Это дает нужный вам результат. Удалите весь код setInterval, он вам вообще не нужен.

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