Как я могу хранить данные ajax в переменной php и использовать ее повторно? - PullRequest
0 голосов
/ 29 июня 2019

После отправки данных с помощью ajax, как сохранить их в переменной PHP?Я создал файл дампа, в котором я вижу, что переменная отправлена, но не вижу их, когда я их отображаю?как я могу их увидеть?Я отправляю данные через URL и отправляю данные через XMLHttpRequest(); Данные возвращаются хорошо, но почему они не хранятся в переменной PHP?

<?php
//dumping code to see received data
$output = "Post Variables\n";
$output .= print_r($_POST, true);

$output .= "\nGet Variables\n";
$output .= print_r($_GET, true);

$output .= "\nBody Content\n";
$output .= print_r(file_get_contents('php://input') ?: "empty", true);

file_put_contents("dump.txt", $output);
// End


if(isset($_GET['a'])) {
    die('This is post data: ' . htmlspecialchars($_GET['a']));
 
} 
if(isset($_POST['b'])) {
    die('This is post data: ' . htmlspecialchars($_POST['b']));
 
} 
    echo "This is get variable: " .$a;
    echo "This is post variable: " .$b;

?>


<html>
<head>
<script>
//sending ajax request to change table name on onclick event
function clickMe(j){
    // Create our XMLHttpRequest object
    var req = new XMLHttpRequest();
    // Create some variables we need to send to our PHP file
    var dayName = document.getElementById("btn"+j).value;
    var SVAR = "b="+dayName;
    var url = "tempo.php?a="+dayName;
    req.open("POST", url, true);
    // Set content type header information for sending url encoded variables in the request
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    // Access the onreadystatechange event for the XMLHttpRequest object
    req.onreadystatechange = function() {
	    if(req.readyState == 4 && req.status == 200) {
		    let data_return = req.responseText;
            document.getElementById("status1").innerHTML = data_return;
 
	    }
    }
    // Send the data to PHP now... and wait for response to update the status div
    req.send(SVAR);
    
}
</script>
</head>
<body>
<h2>Ajax Post to PHP and Get Return Data</h2>


<button id="btn1" value="saturday"  onclick="clickMe(1)">btn1</button>
<button id="btn2" value="sunday"  onclick="clickMe(2)">btn2</button>

<br><br>
<div id="status1"></div>
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 29 июня 2019

Запрос отправлен из файла HTML.

Процесс отправки один:

  $(document).on("click","#btn1",function(){
   var data = $(this).val();

   /* ajax request sent start */
   $.ajax({
       method:"post",
       url:"phpFileName.php",
       data:{backendPostName:data},
       dataType:"json",
       success:function(response){
           /* Logic implemented here */
       }
   });
  /* ajax request sent end*/
});

Процесс отправки 2 в соответствии с вашей HTML-структурой:

function clickMe(data){
   var data = $(this).val();

  /* ajax request sent start */
   $.ajax({
       method:"post",
       url:"phpFileName.php",
       data:{backendPostName:data},
       dataType:"json",
       success:function(response){
           /* Logic Impliment here */
       }
   });
  /* ajax request sent end*/

}

Когда вы хотите получить эти данные отправки внутри php-файла.

Сначала проверьте, найдено это имя или нет с помощью функции php "isset ()"

Пример ниже:

php файл:

<?php 
   if(isset($_POST['backendPostName'])){
     $customName = $_POST['backendPostName'];

     /* 
        store or other logic implement here .
        if you wants to echo html then echo "success"; or your choice
        if you wants to return json data then return json_encode(["result"=>1]);
      */

     /* For HTML Return */

    echo "<h1>Success</h1";

    /*For Json return */   

    echo json_encode(["result"=>1]);
 }

?>

0 голосов
/ 29 июня 2019

То, как вы используете XMLHttpRequest, неверно.Вы должны использовать 2 разные страницы: вызывающий (index.php) и асинхронный скрипт (tempo.php). Чтобы исправить текущую страницу вызывающего абонента: index.php: • Используйте URL без каких-либо параметров:

 url="tempo.php"

• Отправьте два параметра вместе:

 req.send("a="+dayName+"&b="+dayName);

Чтобы отладить асинхронную страницу: tempo.php, просто добавьте поддельный get_parameter вверху tempo.php:

 a = a_possible_value_for_a

изатем вызовите tempo.php прямо в вашем браузере (без вашей ajax-страницы)

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