Ir para conteúdo
Fórum CódigoFonte.net
Entre para seguir isso  
Joilson Lira

Enviar array com Ajax

Recommended Posts

Galera, é o seguinte...

Crio formulários como no seguinte exemplo:


<form name="teste" action="teste.php" method="post">
<input type="text" name="teste[nome]" />
<input type="password" name="teste[senha]" />
<input type="submit" value="Enviar" />
[/html]

Assim, no arquivo processsador faço o seguinte:

[php]
...
if(isset($_POST['teste'])){
$nome = $_POST['teste']['nome'];
$senha = $_POST['teste']['senha'];
<<execute alguma coisa>>
}
elseif(isset($_POST['reteste'])){
<<execute alguma outra coisa>>
}
...
[/php]

Gostaria de saber como enviar estes dados com ajax, pois os exemplos que vi até agora sugerem apenas o envio de dados capturando dado por dado como por exemplo:

[code] <script> $("form").submit(function(){ var nome = $("[name]='teste[nome]'"); var senha = $("[name]='teste[senha]'"); $.post('teste.php', {nome:nome,senha:senha}, function(resposta){ <<faça alguma coisa com a resposta>> }); }); .... </script> [/code]
Já tentei isso:
[code] <script> $("form").submit(function(){ var teste = $("[name]*='teste'"); $.post('teste.php', {teste:teste}, function(resposta){ <<faça alguma coisa com a resposta>> }); }); .... </script> [/code]

Mas dá errado porque a variável teste no js é um objeto e não um array.

Como posso resolver isso?

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu tenho feito desta forma, mas o meu problema é na página seguinte.

Não estou conseguindo pegar a $_SESSION. Talvez te ajude aí:


<!-- index.php -->
...
<form id="login_form" action="" method="post">
<input id="login" name="login" type="text" />
<input id="senha" name="senha" type="password" />
<input id="submit" name="ok" type="submit" value="OK" />
</form>
...
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="scripts.js" type="text/javascript"></script>
</body>
</html>

[/html]

[code] // scripts.js $(function () { $.post('login.php', { login: $('#login').val(), senha: $('#senha').val() }, function (data) { if (data == 'yes') { // Se a response do PHP for yes, redireciona para logado.php document.location = 'logado.php'; } else { // Do contrario, mostra alguma mensagem de erro e retorna para o campo login $('#msgbox').addClass('error'); $('#login').focus(); } ); // return false para evitar a acao padrao do evento submit // ou entao use $('#login_form').submit(function(event) { event.preventDefault(); }); return false; }); }); [/code]

[php]
// Login.php

<?php
// Apos a conexao com o banco, recebe os dados do post enviado pelo ajax
...
$login = $_POST['login'];
$senha = $_POST['senha'];

// Evita algumas tecnicas de MySQL Injection
$login = stripslashes($login);
$senha = stripslashes($senha);
$login = mysql_real_escape_string($login);
$senha = mysql_real_escape_string($senha);

$query = "SELECT user_nome, user_login, user_senha FROM Users WHERE user_login = '".$login."';";

// Executa a query acima e armazena o resultado na variavel result
$result = mysql_fetch_array(mysql_query($query));

if ($result['user_senha'] == $senha) {
session_start();

$_SESSION = array(
'user_login' => $login,
'user_name' => $result['usr_nome']
);

// Envia resposta 'yes' ao servidor caso o login e a senha estejam corretos
echo "yes";
}

// Envia 'no' caso algo esteja errado
else
echo "no";
[/php]

Se o usuário e a senha estiverem corretos, ele será redirecionado para logado.php,

Pois o arquivo javascript espera uma response 'yes' para poder redirecionar.

Mas nessa nova página, minha variável $_SESSION está nula.

Bem, vou pesquisar mais pra resolver esse meu problema, mas talvez isso já te ajude.

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...
Entre para seguir isso  

×
×
  • Criar Novo...