2016-12-12 13 views
0

Ich habe 2 PHP-Datei. Eine PHP-Datei verwendet Ajax, um etwas in eine andere PHP-Datei zu posten.Ajax post undefined Index in PHP

Lasst uns sagen Php 1 index.php, während die andere PHP ist getsomething.php genannt wird

Hier ist meine index.php Code mit Ajax (nur ein Teil des Codes hier gegeben wird)

$(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"); 
      } 
     }); 


    }); 
}); 

jetzt ist hier der 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); 
} 

Aber jedes Mal habe ich versucht, es die getsomething.php Posting überspringt das, wenn und gerade zum anderen gehen.

Kann jemand überprüfen, wo ich falsch liege.

+0

'$ ('# txtbxbrandid'). Val()' ist wahrscheinlich null – Rob

+0

versuchen, var_dump ($ _ POST, $ _SERVER) vor, wenn Sie überprüfen – anwerj

Antwort

1

Ich denke, einige der Variablen in der Ajax-Aufruf nicht definiert sind, versuchen Sie dies:

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

isset() verwendet wird, um zu überprüfen, ob die Variable gesetzt ist oder nicht. Dies wird den Fehler aus Ihrem Code entfernen.

Um zu überprüfen, welche Variable ist nicht definiert, überprüfen Sie die Konsole oder eine print_r setzen ($ _ POST), wird es alle Indices in Drucknachkontrolle

0

Ich würde Ihre

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

Aufgabe schlägt vor, Ihre $.ajax Anruf, und machen Sie eine Variable vor den Anruf.

So ...

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

dann Ajax-Aufruf wird

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

diese Weise können Sie die Web-Entwickler-Konsole öffnen, und wählen Sie 'bestehen logs' und Sie können Ihre Konsolenprotokoll sehen auch nachdem Ihre Seite woanders hingeht. Auf diese Weise können Sie sehen, ob alle Ihre Variablen so eingestellt sind, wie Sie es erwarten.

Ich würde mit den anderen zustimmen müssen, dass es scheint, dass einer oder mehrere Ihrer vars undefiniert sind, wenn es zu der if-Anweisung in Ihrem PHP kommt. Auf diese Weise können Sie untersuchen, wie Ihre Daten aussehen vor der Ajax-Aufruf.