jQuery $ .ajax-Post in PHP-Datei funktioniert nicht

Das liegt also an einem Problem von gestern, das schnell außer Kontrolle geriet, da die Fehler ungewöhnlich waren. Dieses Problem besteht immer noch, aber die Frage wurde auf Eis gelegt.Hierund ich wurde gebeten, eine neue Frage zu reformieren, die sich jetzt auf das aktuelle Problem bezieht. Auf geht's.

Das Problem ist grundlegender Natur. Wenn Sie gestern geholfen haben, habe ich von einem $ .post-Post zu einem $ .ajax-Post gewechselt, um eine Variable an meine zu liefernPHP Datei. Wie auch immer, meinePHP Datei scheint diese Variable nie zu erhalten, die besagt, dass der Index 'undefiniert' ist.

Dies würde normalerweise bedeuten, dass die Variable keinen Wert enthält, falsch benannt ist oder falsch gesendet wurde. Nun, nach einem ganzen Tag des Durcheinanders (töte mich) sehe ich immer noch keinen Grund dafürPHP Datei sollte diese Daten nicht erhalten. Da ich ziemlich neu in diesem Bereich bin, hoffe ich wirklich, dass jemand einen offensichtlichen Fehler entdecken oder eine andere mögliche Lösung empfehlen kann.

Hier ist der Code

jQuery

$('#projects').click(function (e) {
alert(aid); 
$.ajax({    
    url:'core/functions/projects.php',
    type: 'post',
    data: {'aid' : aid},
    done: function(data) {
    // this is for testing
    }
    }).fail (function() {
        alert('error');
    }).always(function(data) {
        alert(data);                                        
        $('#home_div').hide();          
        $('#pcd').fadeIn(1000);
        $('#project_table').html(data); 
    });         
});

PHP

<?php

include "$_SERVER[DOCUMENT_ROOT]/TrakFlex/core/init.php";

if(isset($_POST['aid'])) {  
    $aid = $_POST['aid'];               
    try {
        $query_projectInfo = $db->prepare("
            SELECT  projects.account_id,
                    projects.project_name,                  
                    projects.pm,    
                    //..irrelevant code      
            FROM projects
            WHERE account_id = ?                        
        "); 

        $query_projectInfo->bindValue(1, $aid, PDO::PARAM_STR);
        $query_projectInfo->execute();
        $count = $query_projectInfo->rowCount();

        if ($count > 0) {
            echo "<table class='contentTable'>";
            echo "<th class='content_th'>" . "Job #" . "</th>";
            echo "<th class='content_th'>" . "Project Name" . "</th>";
            //..irrelevant code          
            while ($row = $query_projectInfo->fetch(PDO::FETCH_ASSOC)) {                
                echo "<tr>";
                echo "<td class='content_td'>" . "<a href='#'>" . $row['account_id'] . "</a>" . "</td>";
                echo "<td class='content_td'>" . $row['project_name'] . "</td>"; 
                //..irrelevant code
                echo "</tr>";
            }
            echo "</table>";            
        }       
    } catch(PDOException $e) {
        die($e->getMessage());
    }   
} else {
    echo 'could not load projects table';
}

?>   

Wenn ich diesen Code durch Drücken von "#projects" ausführe, erhalte ich zwei Warnungen. Diese erste Warnung lautet '6'. Dies ist der Wert der Variablen 'aid' und wird erwartet. Die zweite Warnung ist leer.

Jetzt bin ich hier verwirrt. Wenn der Beitrag mit einem Wert von 6 gesendet wird. Ist das $ _POST ['aid'] nicht gesetzt? Auch wenn das stimmt sollte mein Code das nicht ausführenif Teil meiner bedingten Aussagelieber als meineelse? So oder so kommt mir das komisch vor. Sollte ich nicht erhaltenetwas zurück von meinemPHP Datei?

Wir vertrauen also auf Firebug, oder? Wenn ich Firebug öffne und so durchgehe
Firebug -> POST projects.php -> XHR -> POST(tab) ->
Ich sehe 6 im 'Parameter'-Fenster und' 6 'im' Source'-Fenster. Wenn ich dann auf die Registerkarten "Antwort" und "HTML" klicke, haben beide keinen Wert.

Wie auch immer, diese Textwand ist mein Problem. Auch hier hoffe ich sehr, dass mir hier jemand weiterhelfen kann. Ich würde es hassen, mehr Zeit damit zu verschwenden, was eine einfache Lösung sein sollte.

BEARBEITEN

Wenn ich meine PHP-Datei so ändere

<?php

if(isset($_POST['aid'])) {  
    $aid = $_POST['aid'];
    echo $aid;
} else {
    echo 'fail';    
}

Die Antwort ist jetzt '6'! Hurra! Wir haben den Durchbruch geschafft! Warum wird meine Tabelle, die sich aus meiner Abfrage ergibt, nicht geladen?

Randnotiz Dies sollte ursprünglich vermerkt worden sein, wenn ich das wegnehme

if(isset($_POST['aid'])){
//all my code
} else {
    //response
}

und einfach die Variable $ aid so hart codieren

$aid = '6';

Dann starte dasPHP Datei direkt die Abfrage ist erfolgreich und die Seite lädt die Tabelle und erstellt sie dynamisch.

Auch als Antwort auf eine der Antworten, die mich bitten, zu verwenden

$('#projects').click(function (e) {
    alert(aid); 
    $.ajax({    
        url:'core/functions/projects.php',
        type: 'post',
        data: aid,
        success: function(data) {
        // this is for testing
        }
        }).error (function() {
            alert('error');
        }).complete (function(data) {
            alert(data);                                        
            $('#home_div').hide();              
            $('#pcd').fadeIn(1000);
            $('#project_table').html(data); 
        });     
});

Ich habe das benutzt, aber ich benutze jQuery v1.10.2 und lautdiese Diese Methoden sind oder werden veraltet. In beiden Fällen machte es keinen Unterschied im Ergebnis.

Sowieso ist die Frage jetzt. Warum ist es so, wenn ich die einfache Version verwende und meine $ aid-Variable '6' zurücksende? Wenn ich jedoch versuche, meine Abfrage damit auszuführen, erhalte ichnichts. Bitte denken Sie auch daran, ob ich die 6 fest codiere, die die Tabelle erstellt.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage