Запрос почты AJAX Post работает только в веб-консоли (предварительный просмотр) - PullRequest
0 голосов
/ 30 июня 2019

У меня действительно простой ajax-запрос на «отправку» идентификатора элемента, который пользователь нажимает на веб-сайте.Скрипт работает только в веб-консоли (в разделе Сеть -> Предварительный просмотр).Это происходит в каждом браузере.

вот код:

AJAX REQUEST

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<script>
	$('.point1, .point2, .point3, .point4, .point5, .point6, .point7').click(function(event) {
		var itemid = event.target.id;	

	    $.ajax({
           type: 'post',
           //url: "index.php",
           data: {'itemid' : itemid}, 
           cache : false,
           async : true,
		   dataType: 'html',
		   success: function(data) {
                      alert('success');     
           },
		   failure: function(data) {
                    alert('failure');
           }	
	      });
	});
	</script>

Функция PHP

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

		echo "success";
		$itemid = (int)$itemid;
		echo $itemid;
    } else{
	echo "failure";}
  
  ?>

Можете ли вы помочь мне с этим?Большое спасибо

Просто добавьте изображение, чтобы вы лучше поняли

ОБНОВЛЕНО: Вот полный код, надеюсь, он не слишком запутанный (все еще новичок):

Iполучаю правильный ответ, но echo json_encode ($ d);не печатаетКстати, большое спасибо за вашу поддержку:)

<?php
$d = array();
if(isset($_POST['itemid'])){
  if($_POST['itemid'] != ""){
    $d['result'] = "success";
    $d['itemid'] = (int)$_POST['itemid'];
  } else{
    $d['result'] = "error";
    $d['error'] = "'itemid' was not set.";
  }
  header('Content-Type: application/json');
  echo json_encode($d);
  exit();
}

if ( !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'){
  // La richiesta e' stata fatta su HTTPS
} else {
  // Redirect su HTTPS
  // eventuale distruzione sessione e cookie relativo
  $redirect = 'https://' . $_SERVER['HTTP_HOST'] .
  $_SERVER['REQUEST_URI'];
  header('HTTP/1.1 301 Moved Permanently');
  header('Location: ' . $redirect);
  exit();
}
?>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="../style.css" type="text/css">
<?php
setcookie('test', 1, time()+3600);

if(!isset($_GET['cookies'])){
    include_once "../header.php";
    include_once '../footer.php';
    include_once '../right_column.php';

    echo"<script type='text/javascript'></script>\r\n<noscript>JavaScript is off. Please enable to view full site.</noscript>";
} else {
    echo "No Cookies";
}
?>
<div class="map">
  <div class="point1" id="1"> </div>
  <div class="point2" id="2"> </div>
  <div class="point3" id="3"> </div>
  <div class="point4" id="4"> </div>
  <div class="point5" id="5"> </div>
  <div class="point6" id="6"> </div>
  <div class="point7" id="7"> </div>
</div> 
<?php
    $green='rgb(30,255,0)';     
    $yellow='rgb(255,255,0)';
    $red='rgb(255,0,0)';    

    include '../includes/dbhinc.php';

    for ($i = 1; $i <= 7; $i++) {   
        $sql="SELECT nummot, numbici FROM grid WHERE cellaid='$i'";
        $result=mysqli_query($conn, $sql);
        $row = mysqli_fetch_assoc($result);
        $moto=$row["nummot"];
        $bici=$row["numbici"];

        $mezzi=$moto+$bici;

        if($mezzi>=4){
            $color=$green;
            $sql="UPDATE `grid` SET `rgb`='rgb(30,255,0)' WHERE cellaid = $i";
            mysqli_query($conn, $sql); 
            echo "<script> document.getElementById('$i').style.backgroundColor ='rgb(30,255,0)' </script>";
        } else if($mezzi<4 && $mezzi>0){
            $color=$yellow;
            $sql="UPDATE `grid` SET `rgb`='rgb(255,255,0)' WHERE cellaid = $i";
            mysqli_query($conn, $sql); 
            echo"<script> document.getElementById('$i').style.backgroundColor ='rgb(255,255,0)' </script>";
        }   else{   
            $color=$red;
            $sql="UPDATE `grid` SET `rgb`='rgb(255,0,0)' WHERE cellaid = $i";
            mysqli_query($conn, $sql); 
            echo"<script> document.getElementById('$i').style.backgroundColor ='rgb(255,0,0)' </script>";
        }
}   
?>  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(".point1, .point2, .point3, .point4, .point5, .point6, .point7").click(function(event) {
    var itemid = $(this).attr("id");    

  $.ajax({
    type: 'post',
    url: "index.php",
    data: {
      'itemid': itemid
    }, 
    cache: false,
    async: true,
    dataType: 'json',
    success: function(data) {
      if(data.result == "success"){
        console.log("Success", data.itemid);
      } else {
        console.log("Failed", data);
      }
    }
  });
});
</script>
<?php       
	
		echo "<script type='text/javascript'>\r\n";
		echo "$('.point1, .point2, .point3, .point4, .point5, .point6, .point7').click(function(event) {\r\n";
        echo "\talert('itemid');\r\n";
        echo "\tvar itemid = event.target.id;\r\n";
        echo "});\r\n";
		echo "</script>";


    if(isset($_SESSION['id'])){
        if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 120)) {
                    session_unset();     // unset $_SESSION variable for the run-time 
                    session_destroy();   // destroy session data in storage
                    header("Location: index.php");
        }

        $_SESSION['LAST_ACTIVITY'] = time();        
		
		echo "<script type='text/javascript'>\r\n";
        echo "&nbsp;&nbsp;&nbsp;Inserisci qui il n°di Bici da prenotare <input type='number' id='bicidapren' method='post'>&nbsp;&nbsp;&nbsp;Inserisci qui il n°di Moto da prenotare <input type='number' id='motodapren' method='post'> <button id='tryit' onclick='myFunction()'>Confirm</button>";
        echo "function myFunction() {\r\n";
        echo "\tBicidaprenotare = parseInt(document.getElementById('bicidapren').value)-1;\r\n";
        echo "\tMotodaprenotare = parseInt(document.getElementById('motodapren').value)-1;\r\n";
        echo "}\r\n";
        echo "</script>";
        }
?>
</body>
</html>

Ответы [ 2 ]

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

Вот что может работать для вас.Если это не работает, пожалуйста, поделитесь всем своим кодом и ответом от PHP тоже.

// jQuery AJAX call should be something like this
$.ajax({
    url: 'index.php',
    data: {
        "itemid": itemid
    },
    type: "post",
    dataType: "json",
    success: function(json) {
        if(json.success) {
            alert("Item ID is " + json.itemid);
        } else {
            alert("Item ID is " + json.itemid);
        }
    },
    error: function(jqXHR, textStatus, errorThrown) {
        alert("Error :: " + textStatus + " :: " + errorThrown);
    }
});


// PHP code can be like this
if(isset($_POST['itemid'])){
    $itemid = $_POST['itemid'];
    echo json_encode(['success' => true, 'itemid' => $itemid]);
} else {
    echo json_encode(['success' => false, 'itemid' => 'Not available']);
}
0 голосов
/ 30 июня 2019

Рассмотрим следующее.

JavaScript

$("[class*='point']").click(function(e) {
  var itemid = $(this).attr("id");  

  $.ajax({
    type: 'post',
    url: "index.php?",
    data: {
      'itemid': itemid
    }, 
    cache: false,
    async: true,
    dataType: 'json',
    success: function(data) {
      if(data.result == "success"){
        console.log("Success", data.itemid);
      } else {
        console.log("Failed", data);
      }
    }
  });
});

PHP

<?php
$d = array();
if(isset($_POST['itemid'])){
  $d['result'] = "success";
  $d['itemid'] = (int)$_POST['itemid'];
} else{
  $d['result'] = "error";
  $d['error'] = "'itemid' was not set.";
}
header('Content-Type: application/json');
echo json_encode($d);
?>

Во многих случаяхлучше передать данные в формате JSON.JavaScript легче справляется с этим.Поэтому мы создаем массив данных, которые мы хотим передать обратно в AJAX-запрос, и закодируем его как JSON.

Когда мы создаем AJAX Post, PHP приведет к успешному ответу.Вы можете поймать ошибку, это может произойти с 400 или 500 Результатом статуса из вызова PHP.Вы также можете увидеть это в своей веб-консоли.

Мы собираемся получить объект JSON из PHP, либо:

{
  result: "success",
  itemid: 2
}

Или:

{
  result: "error",
  error: "'itemid' was not set."
}

В JavaScript мы можем использовать точечную нотацию для доступа к элементам объекта.Вы также можете получить к нему доступ следующим образом:

if(data['result'] == "success")

Рекомендуется использовать обозначения точек.

Обновление 1

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

<?php
$d = array();
if(isset($_POST['itemid'])){
  if($_POST['itemid'] != ""){
    $itemid = (int)$_POST['itemid'];
  } else{
    $d['result'] = "error";
    $d['error'] = "'itemid' was not set.";
  }
  $d;
  // Connect to SQL
  // Query DB for Table Data ...WHERE itemId = '$itemid'
  // Store resultset to $d
  header('Content-Type: application/json');
  echo json_encode($d);
  exit();
}

if ( !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'){
  // La richiesta e' stata fatta su HTTPS
} else {
  // Redirect su HTTPS
  // eventuale distruzione sessione e cookie relativo
  $redirect = 'https://' . $_SERVER['HTTP_HOST'] .
  $_SERVER['REQUEST_URI'];
  header('HTTP/1.1 301 Moved Permanently');
  header('Location: ' . $redirect);
  exit();
}
?>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="../style.css" type="text/css">
<?php
setcookie('test', 1, time()+3600);

if(!isset($_GET['cookies'])){
    include_once "../header.php";
    include_once "../grid.asp";
    include_once '../footer.php';
    include_once '../right_column.php';

    echo"<script type='text/javascript'></script>\r\n<noscript>JavaScript is off. Please enable to view full site.</noscript>";
} else {
    echo "No Cookies";
}
?>
<div class="map">
  <div class="point1" id="1"> </div>
  <div class="point2" id="2"> </div>
  <div class="point3" id="3"> </div>
  <div class="point4" id="4"> </div>
  <div class="point5" id="5"> </div>
  <div class="point6" id="6"> </div>
  <div class="point7" id="7"> </div>
</div> 
<?php
    $green='rgb(30,255,0)';     
    $yellow='rgb(255,255,0)';
    $red='rgb(255,0,0)';    

    include 'includes/dbhinc.php';

    for ($i = 1; $i <= 7; $i++) {   
        $sql="SELECT nummot, numbici FROM grid WHERE cellaid='$i'";
        $result=mysqli_query($conn, $sql);
        $row = mysqli_fetch_assoc($result);
        $moto=$row["nummot"];
        $bici=$row["numbici"];

        $mezzi=$moto+$bici;

        if($mezzi>=4){
            $color=$green;
            $sql="UPDATE `grid` SET `rgb`='rgb(30,255,0)' WHERE cellaid = $i";
            mysqli_query($conn, $sql); 
            echo "<script> document.getElementById('$i').style.backgroundColor ='rgb(30,255,0)' </script>";
        } else if($mezzi<4 && $mezzi>0){
            $color=$yellow;
            $sql="UPDATE `grid` SET `rgb`='rgb(255,255,0)' WHERE cellaid = $i";
            mysqli_query($conn, $sql); 
            echo"<script> document.getElementById('$i').style.backgroundColor ='rgb(255,255,0)' </script>";
        }   else{   
            $color=$red;
            $sql="UPDATE `grid` SET `rgb`='rgb(255,0,0)' WHERE cellaid = $i";
            mysqli_query($conn, $sql); 
            echo"<script> document.getElementById('$i').style.backgroundColor ='rgb(255,0,0)' </script>";
        }
}   
?>  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(".point1, .point2, .point3, .point4, .point5, .point6, .point7").click(function(event) {
    var itemid = $(this).attr("id");    

  $.ajax({
    type: 'post',
    url: "index.php?",
    data: {
      'itemid': itemid
    }, 
    cache: false,
    async: true,
    dataType: 'json',
    success: function(data) {
      if(data.result == "success"){
        console.log("Success", data.itemid);
      } else {
        console.log("Failed", data);
      }
    }
  });
});
</script>
<?php       
    if(isset($_SESSION['id'])){
        if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 120)) {
                    session_unset();     // unset $_SESSION variable for the run-time 
                    session_destroy();   // destroy session data in storage
                    header("Location: index.php");
        }

        $_SESSION['LAST_ACTIVITY'] = time();        

        echo "&nbsp;&nbsp;&nbsp;Inserisci qui il n°di Bici da prenotare <input type='number' id='bicidapren' method='post'>&nbsp;&nbsp;&nbsp;Inserisci qui il n°di Moto da prenotare <input type='number' id='motodapren' method='post'> <button id='tryit' onclick='myFunction()'>Confirm</button>";
        echo "<script type='text/javascript'>\r\n";
        echo "$('.point1, .point2, .point3, .point4, .point5, .point6, .point7').click(function(event) {\r\n";
        echo "\talert('itemid');\r\n"
        echo "\tvar itemid = event.target.id;\r\n";
      echo "});\r\n";   
        echo "function myFunction() {\r\n";
        echo "\tBicidaprenotare = parseInt(document.getElementById('bicidapren').value)-1;\r\n";
        echo "\tMotodaprenotare = parseInt(document.getElementById('motodapren').value)-1;\r\n";
        echo "}\r\n";
        echo "</script>";
        }
?>
</body>
</html>

Надеюсь, это поможет.

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