La publicación de jQuery $ .ajax en un archivo PHP no funciona

Así que esto se debe a un problema de ayer que rápidamente se salió de control ya que los errores eran inusuales. Este problema todavía existe, pero la pregunta quedó en espera,aquí, y me pidieron que reformara una nueva pregunta que ahora se relaciona con el problema actual. Así que, aquí vamos.

El problema es de naturaleza básica. Si estabas ayudando ayer, he cambiado de una publicación de $. A una publicación de $ .ajax para entregar una variable a miPHP expediente. Sin embargo miPHP el archivo parece que nunca recibe esta variable que indica que el índice es 'indefinido'.

Ahora, esto normalmente significa que la variable no tiene ningún valor, se nombra incorrectamente o se envió incorrectamente. Bueno, después de un día entero de meterme con esto (mátame) todavía no veo razón por la quePHP El archivo no debe estar recibiendo estos datos. Como soy bastante nuevo en esto, realmente espero que alguien pueda detectar un error obvio o recomendar otra posible solución.

Aquí está el código

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';
}

?>   

Cuando ejecuto este código presionando '#projects' obtengo 2 alertas. Esta primera alerta dice '6', que es el valor de la variable 'ayuda' y se espera. La segunda alerta está en blanco.

Ahora aquí es donde me confundo. Si la publicación se está enviando con un valor de 6. ¿No está establecido $ _POST ['ayuda']? Además, si eso es cierto, ¿no debería mi código ejecutar elif parte de mi declaración condicionalmás bien que mielse?. De cualquier manera esto me parece extraño. No deberia recibiralguna cosa atrás de miPHP ¿expediente?

Así que en Firebug confiamos, ¿verdad? Si abro Firebug y paso así
Firebug -> POST projects.php -> XHR -> POST(tab) ->
Veo 6 en la ventana 'Parámetro' y '6' en la ventana 'Fuente'. Luego, si hago clic en las pestañas "Respuesta" y "HTML", ambas no tienen ningún valor.

Así que de todos modos, ese muro de texto es mi problema. Una vez más, realmente espero que alguien pueda ayudarme aquí. Odiaría perder más tiempo en lo que debería ser una solución simple.

EDITAR

Si cambio mi archivo php para que se vea así

<?php

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

La respuesta es ahora '6'! ¡Hurra! ¡Hicimos un gran avance! Ahora, ¿por qué no carga mi tabla que resulta de mi consulta?

nota al margen Esto debería haber sido observado originalmente si quito el

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

y solo codifica la variable $ ayuda como esta

$aid = '6';

A continuación, ejecute elPHP archivo directamente la consulta es exitosa y la página carga la tabla que está creando dinámicamente.

También en respuesta a una de las respuestas pidiéndome que use

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

Estaba usando eso, pero estoy usando jQuery v1.10.2 y de acuerdo conesta Esos métodos están o estarán en desuso. De cualquier manera hizo 0 diferencia en el resultado.

De todos modos la pregunta es ahora. ¿Por qué si usé la versión simple me devolvieron el eco de mi variable $ aid de '6'? Sin embargo, cuando trato de ejecutar mi consulta con él obtengonada. También, por favor, trate de recordar si el código duro del 6, la tabla crea.

Respuestas a la pregunta(6)

Su respuesta a la pregunta