Ir para conteúdo

POWERED BY:

Arquivado

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

mmillers

Enviar formulario via ajax em php

Recommended Posts

Boa tarde pessoal,

 

Estou precisando de uma ajudinha, é bem bobo, não conseguindo ver o erro e espero que possam me ajudar.

tenho no <head> o seguinte:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
            <script type="text/javascript">
                jQuery(document).ready(function() {
                    jQuery('#myForm').submit(function() {
                        var dados = jQuery( this ).serialize();
                        jQuery.ajax({
                            type: 'POST',
                            url: 'statusUpdate.php',
                            data: dados,
                            success: function( data )
				{
					alert( "Alteração salva!");
				 }
                        });
                        return false;
                     });
                });
            </script>

 

e no <body> desta página tenho o seguinte código

$rs = mysql_query("SELECT * FROM usuario");
while ($qr = mysql_fetch_array($rs)) {
?>
<form id="myForm" action="" method="post"> 
    <input type="hidden" name="name" value="<?php echo $qr['id_usuario']?>"/>
      <?php
           echo '<input type="checkbox" name="cb" checked />' . 'Ativo?';
      ?>
     <input type="submit" value="Salvar" id="Cadastrar"/>
</form>

e na pagina statusUpdate.php o código abaixo

$asd = $_POST['cb'];
$qwe = $_POST['name'];

    if ($asd == "on")
        $asd = 1;
    else
        $asd = 0;
    conection();
    mysql_query("UPDATE usuario SET ativo='" . $asd . "' WHERE id_usuario=" . $qwe);
    mysql_close();

 

o meu problema é que a página statusUpdate.php que era para ser executada por trás via ajax é exibida no navegador.

Alguém sabe me dizer onde está o erro ou se não tem erro no código qual pode ser o problema?

 

Agradecido!

Compartilhar este post


Link para o post
Compartilhar em outros sites

aperta Ctrl + Shift + J e veja o console de erros

Compartilhar este post


Link para o post
Compartilhar em outros sites

aperta Ctrl + Shift + J e veja o console de erros

 

Bruno, deixei uma mensagem no seu site se você puder me ajudar, fico agradecido pois estou aprendendo sobre esse assunto ainda.

Aparece a mensagem:

SyntaxError: missing : after property id action.php:17

 

 

action.php na linha 17 é onde o script é iniciado, na verdade é a primeira linha dentro do script

essa linda

jQuery(document).ready(function() {

 

O que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qndo vc for contar as linhas, vc tem q levar em consideração o arquivo executado, e não o que vc edita. Veja no Ctrl + U quem é a linha 17.

while ($qr = mysql_fetch_array($rs)) {
?>
<form id="myForm" action="" method="post">

vc possui várias tags form nesse documento ?

 

Se for, vc não pode duplicar o ID dos elementos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Entendi Bruno, acho que pode ser isso então porque ele gera vários forms e com o mesmo id.

 

Uma idéia que pode solucionar meu problema é colocar somente o checkbox e ao clicar nesse checkbox passe o valor dele por ajax para o arquivo statusUpdate.php e atualizar no banco.

Mas o nome ficaria duplicado tambem, você pode me ajudar a desenvolver isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca duplique algum ID, sendo que vc utiliza para indentificar o elemento

 

Como eu poderia fazer dinamicamente para nomear sem que sejam duplicados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

usando classes.

Ok, vou tentar aqui e posto o resultado, Obrigado :)

 

 

Desenvolvi o seguinte código:

 

<!DOCTYPE HTML><html>    <head>        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>        <script type="text/javascript">            jQuery(document).ready(function() {                jQuery('.cb').click(function() {                    var cb = $(".cb").val();                    var id = $(".cb").attr('rel');                    jQuery$.ajax({                    type: 'POST',                            url: 'statusUpdate.php',                            data: "cb=" + cb, "id=" + id;                            alert("Alteração salva!")                    });                });            });        </script>    </head><body>    <?php    $rs = mysql_query("SELECT * FROM usuario");    echo " <table> <tr>";    while ($qr = mysql_fetch_array($rs)) {        echo "<td>" . $qr['nome'] . "</td><td>" . $qr['observacao'] . "</td><td>";        ?>         <a href="javascript:abrir('f_rev_update.php?acao=update&id=<?php echo $qr['id_usuario'] ?>', 300,270 );">Editar</a>        <?php        echo "</td><td>";        if ($qr['ativo'] == 1) {            echo '<input type="checkbox" class="cb" rel=' . $qr['id_usuario'] . ' checked />' . 'ativo?';        } else {            echo '<input type="checkbox" class="cb" rel=' . $qr['id_usuario'] . '/>' . 'ativo?';        }        echo "</td></tr></table>";    }        ?>    </body></html>

mas ainda continua errado, help me please.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente, para este ajax funcionar por traz em segundo plano, é necessario importar o arquivo jquery.js na pagina !!

Por isto seu inicio da chamada ta dando pau ....

jQuery(document).ready(function() {

 

Após importar ... vai erificar que funcionará corretamente, no entanto seu problema na implementação continuar errado, favor avisar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque Isto:

 

<script type="text/javascript">
            jQuery(document).ready(function() {
                jQuery('.cb').click(function() {
                    var cb = $(".cb").val();
                    var id = $(".cb").attr('rel');

                    jQuery$.ajax({
                    type: 'POST',
                            url: 'statusUpdate.php',
                            data: "cb=" + cb, "id=" + id;
                            alert("Alteração salva!")
                    });
                });
            });
        </script>

Para Isto:

<script type="text/javascript">
            jQuery(document).ready(function() {
                jQuery('.cb').click(function() {
                    var cb = $(".cb").val();
                    var id = $(".cb").attr('rel');

                    $.ajax({
                            type: 'POST',
                            url: 'statusUpdate.php',
                            data: {'cb': cb, 'id' : id},
                            success: function(e){
                                 alert("Alteração salva!")
                            }
                    });
                });
            });
        </script>

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.