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

时间:2018-03-28 09:42:30

标签: javascript php jquery ajax

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

的index.php

create  table FactTable (
        id1 int,
        id2 int,
        value1 int)
with    (distribution = hash(id1));

create  table StageTable (
        id1 int,
        id2 int,
        value1 int)
with    (distribution = replicate);

create  table UpdatedFact 
with    (distribution = hash(id1)) 
as
select  f.id1,
        f.id2,
        case when s.id1 is not null and s.value1 > f.value1 
            then s.value1
            else f.value1
            end as value1
from    FactTable f
        left outer join StageTable s
        on s.id1 = f.id1
        and s.id2 = f.id2

truncate table FactTable;
alter table UpdatedFact switch to FactTable;
drop table UpdatedFact;

的script.js

 <?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);
 ?>

2 个答案:

答案 0 :(得分:3)

第一!您的代码中存在重复条件User-Agent(3次):

isset($_POST['date'])

二!您应该删除 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;

enter image description here

ajax

enter image description here

答案 1 :(得分:0)

检查AJAX请求中的ContentType标头。它可能是作为JSON发送而PHP没有解串器进入$ _POST数组。它可能需要作为序列化表单数据发送,如this example中所示。

根据我的经验(尽管在.NET中),如果数据没有被服务器从请求中挑选出来,那么通常情况下ContentType标头没有正确设置,以便您如何&# 39;重新传递数据,以便服务器不了解如何将其拉出来。

修改 您可以通过在传递给contentType的选项对象中设置$.ajax属性来控制此操作,默认显然是'application/x-www-form-urlencoded; charset=UTF-8',并且当您将对象传递给data属性时,根据processData属性,默认行为是将其序列化为查询字符串,以适合默认的contentType。来源:jQuery docs

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