jQuery $ .ajax post para o arquivo PHP não está funcionando

Então, isso decorre de um problema de ontem que rapidamente saiu do controle, já que os erros eram incomuns. Este problema ainda existe, mas a questão foi colocada em espera,Aqui, e me pediram para reformar uma nova questão que agora se relaciona com o problema atual. Aqui vamos nos.

O problema é básico por natureza. Se você estava ajudando ontem eu mudei de um post $ .post para um $ .ajax post para entregar uma variável para o meuPHP Arquivo. No entanto meuPHP arquivo parece nunca receber essa variável informando que o índice é 'indefinido'.

Agora isso normalmente significa que a variável não tem valor, é nomeada incorretamente ou foi enviada incorretamente. Bem, depois de um dia cheio de mexer com isso (me matar) eu ainda não vejo razão minhaPHP arquivo não deve estar recebendo esses dados. Como sou relativamente novo nisso, estou realmente esperando que alguém consiga identificar um erro óbvio ou recomendo outra possível solução.

Aqui está o 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';
}

?>   

Quando executo este código pressionando '#projects' recebo 2 alertas. Este primeiro alerta diz '6', que é o valor da variável 'ajuda' e é esperado. O segundo alerta está em branco.

Agora aqui é onde eu fico confuso. Se a postagem está sendo enviada com um valor de 6. O conjunto $ _POST ['aid'] não está definido? Além disso, se isso é verdade, não deveria meu código executar oif parte da minha declaração condicionalem vez do que o meuelse? De qualquer maneira isso me parece estranho. Eu não deveria receberalguma coisa de volta do meuPHP Arquivo?

Então, no Firebug nós confiamos, certo? Se eu abrir o Firebug e passar assim
Firebug -> POST projects.php -> XHR -> POST(tab) ->
Eu vejo 6 na janela 'Parameter' e '6' na janela 'Source'. Então, se eu clicar nas guias "Response" e "HTML", elas não terão nenhum valor.

Então, de qualquer forma, essa parede de texto é o meu problema. Mais uma vez, estou realmente esperando que alguém possa me ajudar aqui. Eu odiaria perder mais tempo com o que deveria ser uma solução simples.

EDITAR

Se eu mudar o meu arquivo php para ficar assim

<?php

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

A resposta é agora '6'! Viva! Nós fizemos um grande avanço! Agora, por que não carrega minha tabela que resulta da minha consulta?

nota Isto deveria ser anotado originalmente se eu tirar o

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

e codifique apenas a variável $ aid como esta

$aid = '6';

Em seguida, execute oPHP arquivo diretamente a consulta é bem sucedida e a página carrega a tabela criando dinamicamente.

Também em resposta a uma das respostas que me pedem para usar

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

Eu estava usando isso, mas estou usando o jQuery v1.10.2 e de acordo comisto esses métodos são ou serão descontinuados. De qualquer forma, fez diferença 0 no resultado.

De qualquer forma, a questão é agora. Por que é que se eu usei a versão simples, recebo de volta a minha variável $ aid de '6'. No entanto, quando tento e executar minha consulta com ele eu recebonada. Também por favor, tente lembrar se eu codificar o 6, a tabela cria.

questionAnswers(6)

yourAnswerToTheQuestion