繁体   English   中英

php显示空数组,但ajax显示数据

[英]php shows empty array but ajax shows the data

我正在尝试使用AJAX在PHP中发送的数据,但是由于某种原因,该数组为空,我也没有从PHP或控制台中得到任何错误。 console.log(data)显示带有选择值的数组。 PHP之后是script.js所在的HTML。 的console.log 的console.log

的index.php

 <?php
    error_reporting(-1);
    $value1 = "";
    $value2 = "";
    print_r($_POST); 
    if (isset($_POST['date']) && isset($_POST['date'])) {
        if (isset($_POST['date'])) {
            echo "Yes, mail is set";
            $value1 = $_POST['date'];
            $value2 = $_POST['quantity'];
        } else {
            echo "No, mail is not set";
        }
        exit;
    }
    echo $value1; 
    echo $value2;
    $canmakereservation = "https://www.planyo.com/rest/?method=can_make_reservation&api_key=YOURKEY&resource_id=110556&start_time=2018-04-25 09:00&end_time=2018-04-25 12:00&quantity=5";
    $cleancanmakereservation = preg_replace("/ /", "%20", $canmakereservation);
    $reservationavailable = file_get_contents("$cleancanmakereservation");
    $reservationAvailable = json_decode($reservationavailable, true);
    // echo "$cleancanmakereservation";
    // var_dump($reservationAvailable);
 ?>

的script.js

$(document).ready(function(){

var date = "date";
var begin = "begin";
var eind = "eind";
var aantal = "aantal";


$('#datum').change(function() {
  date = $("#datum").val();
  console.log(date);
});
$('#beginTijd').change(function(){
    begin =( $(this).val() ); 
    console.log(begin);      
});
$('#Tijdsduur').change(function(){
    eind =( $(this).val() ); 
    console.log(eind);      
});
$('#aantalSloepen').change(function() {
aantal = ($(this).val());
console.log(aantal);
  $.ajax({
      type: "POST",
      url: "index.php",
      data: {
          date: begin,
          quantity: aantal
      },
      success: function(data) {
          alert(data);
          console.log(data);
      }
  });
});
});

第一! 您的代码中有重复的条件isset($_POST['date']) (3次):

 if (isset($_POST['date']) && isset($_POST['date'])) {
        if (isset($_POST['date'])) {
            echo "Yes, mail is set";
            $value1 = $_POST['date'];
            $value2 = $_POST['quantity'];
        } else {
            echo "No, mail is not set";
        }
        exit;
    }

第二! 您应该删除exit; 然后再试一次!

第三:如果$value1$value2不是字符串,则应检查变量类型。 echo是错误的。 尝试return

编辑:

试试这个,对我有用! .php目标:

$value1 = "";
$value2 = "";
if (isset($_POST['date']) && isset($_POST['quantity'])) {

        echo "Yes, mail is set";
        $value1 = $_POST['date'];
        $value2 = $_POST['quantity'];
    }
    else {
        echo "No, mail is not set";
}
echo $value1;
echo $value2;

ajax

在此处输入图片说明

result

在此处输入图片说明

检查AJAX请求中的ContentType标头。 可能是因为它以JSON的形式发送,而PHP并未将其反序列化到$ _POST数组中。 本例所示 ,可能需要将其作为序列化表格数据发送。

根据我的经验(尽管在.NET中),如果服务器未从请求中挑选数据,通常是因为未正确设置ContentType标头来传递数据,因此服务器无法理解如何将其拔出。

编辑:您可以通过在传递给$.ajax options对象中设置contentType属性来控制它,默认值显然是'application/x-www-form-urlencoded; charset=UTF-8' $.ajax 'application/x-www-form-urlencoded; charset=UTF-8' ,然后根据processData属性将对象传递给data属性时,默认行为是将其序列化为查询字符串,以适合默认的contentType。 资料来源: jQuery docs

所以我的错误看起来应该都匹配,尽管我通常喜欢明确指定这些属性以避免任何混乱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM