Ajax在php中发布未定义的索引

时间:2016-12-12 05:17:45

标签: javascript php jquery ajax

我有2个php文件。一个Php文件使用ajax将内容发布到另一个php文件。

让我们说Php 1被称为index.php,而另一个php是getsomething.php

这里是带有ajax的index.php代码(这里只给出了部分代码)

$(function() {
  $("#datestart").on("change", function() {
     var d = new Date();
     var n = d.getFullYear();
     var dte = new Date(n, $(this).val(), 0).getDate();
     var datestart = n + "-" + $(this).val() + "-01 00:00:00";
     var dateend   = n + "-" + $(this).val() + "-" + dte + " 23:59:59";
     var brandid   = $('#txtbxbrandid').val();

     //-----GENDER----//
     $.ajax({ url: 'ajax/datagenderfilter.php',
         dataType:'json',
         type: 'post',
         data: {'bidg' : brandid, 'startg' : datestart, 'stopg' : dateend},

          success: function(output) {

          $('#chartContainergender').remove();
          $('#chartgender').append('<div id="chartContainergender" style="height: 300px; width: 100%;"></div>');
          var chartgender = new CanvasJS.Chart("chartContainergender",
            {
                title:{
                    text: "Pie chart filtered by Gender"
                },
                legend: {
                    maxWidth: 350,
                    itemWidth: 120
                },
                data: [
                {
                    type: "pie",
                    showInLegend: true,
                    legendText: "{indexLabel}",
                    dataPoints: output
                }
                ]
            });
            chartgender.render();
          },
          error: function(request, status, error){
            alert("Error: Could not delete");
          }
      });


   });
});

现在这里是getsomething.php

if (isset($_POST['bidg'])) {
$brandid = $_POST['bidg'];
$datebeg = $_POST['startg'];
$dateend = $_POST['stopg'];

echo json_encode($brandid, JSON_NUMERIC_CHECK);
}
else{
  echo json_encode("FAILED", JSON_NUMERIC_CHECK);
}

但每当我尝试发布时,getsomething.php会跳过if并直接转到其他地方。

有人可以查看我哪里错了。

2 个答案:

答案 0 :(得分:1)

我认为你的ajax调用中有些变量是未定义的,试试这个:

$brandid = isset($_POST['bidg']) ? $_POST['bidg']: '';
$datebeg = isset($_POST['startg'])? $_POST['startg']: '';
$dateend = isset($_POST['stopg'])? $_POST['stopg']: '';

isset()用于检查变量是否已设置。这将从您的代码中删除错误。

要检查哪个变量未定义,请检查您的控制台或放置print_r($ _ POST),它将打印POST中可用的所有索引

答案 1 :(得分:0)

我建议你拿

data: {
    'bidg' : brandid, 
    'startg' : datestart, 
    'stopg' : dateend
}

$.ajax来电的对象,并在通话之前将其变为

因此...

var _data = {'bidg' : brandid, 'startg' : datestart, 'stopg' : dateend};
console.log("data for ajax call", _data);

然后你的ajax调用变为

$.ajax({ url: 'ajax/datagenderfilter.php',
         dataType:'json',
         type: 'post',
         data: _data,
// the rest of your code here

通过这种方式,您可以打开Web开发人员控制台,然后选择“保留日志”#39;即使您的页面转到其他位置,您也可以看到您的控制台日志。通过这种方式,您可以查看是否所有变量都按预期方式设置。

我必须同意其他人的观点,当你的PHP中的if语句到达时,你的vars中似乎有一个或多个vars未定义。通过这种方式,您可以检查数据在之前之前的