Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marlaaragao

Variáveis passadas por Ajax não são reconhecidas pelo PHP

Recommended Posts

Bom dia,

 

Estou com a seguinte situação: uma radiobuttonlist que ao mudar a opção deve mudar o conteudo de uma combobox com pesquisa no banco de dados. O código do Ajax segue:

var $ = jQuery;
    
    var natureza = $('input:radio[name=natureza_conta]:checked').val();


    $.ajax({
        url: 'planocontas/getAccountsList',
        type: 'POST',
        global: false,
        
        data: {
            act: 'send',
            natureza: natureza
        },
        async: true,
        error: function (data) {
        },
        success: function (data) {
            try {
                var obj = data;
                if (obj[0].status == "1") { [... etc ...]

Ao tentar recuperar as variáveis por $_POST['act'] ou $_POST['natureza'], elas vêm vazias. Fiz um teste no método getAccountsList passando um vetor qualquer para data, e ele é 'recuperado pelo ajax' normalmente, mas preciso da variavel natureza para efetuar a busca no banco.

 

No Firebug, vi que as variáveis estão sendo enviadas. Segue imagem abaixo:

 

Zodpibw.png

 

Alguém pode me dar uma luz sobre o que está acontecendo? Obrigada!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está o teu arquivo php ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

O método segue:

        $arr = array();

        if ($_POST['act'] == 'send') {
            
            $arr[] = '{"status": "1"}';
            
            $result = PlanoContas::_getListaContas($_POST['natureza']);
            
            foreach ($result as $key => $val) {
                $arr[] = '{"id_conta": "' . $val['id'] . '", "descricao": "' . $val['id_conta'] . ' - '. $val['descricao'] . '"}';
            }
        
        } else {
            $arr[] = '{"status": "0"}';
//            $arr[] = '{"status": "1"}';         // Teste (array é passado)
//            for ($i = 0; $i < 5; $i++) {        
//                $arr[] = '{"id_conta": "' . $i . '", "descricao": "' . 'teste'.$i// . '"}';
//            }
        }

        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');   // date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
        header('Cache-Control: no-cache, must-revalidate'); // HTTP/1.1
        header('Pragma: no-cache'); // HTTP/1.0
        header('Content-Type: application/json');


        echo '[';
        echo implode(',', $arr);
        echo ']';


        exit;
Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Okay.. não vi nenhum erro aparente.

 

Tem como vc postar um link para vermos online ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, pior que não tem como, estou trabalhando ainda em localhost... Já quebrei a cabeça e não consigo saber o que está acontecendo. Vou tentando, qualquer novidade posto aqui...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vc pode tentar o seguinte:

 

        $arr = array();

var_dump($_POST); exit();
        if ($_POST['act'] == 'send') {
e veja se lá no Resposta do ajax vem alguma coisa no var_dump().

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!

 

Fiz o teste que voce citou e a resposta no firebug foi:

<pre class='xdebug-var-dump' dir='ltr'><font color='#3465a4'>null</font>
</pre>

Alguma idéia? Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.