Passar um array para uma função javascript/ajax

849 views
Skip to first unread message

Leandro Santos Lopes

unread,
Sep 14, 2012, 12:23:44 PM9/14/12
to php-b...@googlegroups.com, javascr...@googlegroups.com
Boa tarde,
  1. Tenho um formulário com n alunos para serem digitadas notas e faltas dos seus respectivos alunos.
  2. Após digitar as notas, ao clicar no botão digitar nota, uma função javascript/ajax é disparada.
  3. Quero que esta função javascript/ajax adicionarNotas(...), adicione e/ou atualize as notas e faltas.
  4. Passar um valor no parâmetro, eu consigo, mas passar um array como todos os alunos e suas notas e faltas, como o faço?
Eis o código do adicionarNotas(...), e vejam os comentários no código: http://pastebin.com/MrFVvUHS

-- 
Leandro Santos Lopes
Técnico em Programação de Computadores - IFMA
Linux User: #\525575
Ubuntu User: #32498



Jefferson Stachelski

unread,
Sep 16, 2012, 5:16:11 PM9/16/12
to php-b...@googlegroups.com, javascr...@googlegroups.com
Leandro, essa pergunta seria melhor respondida pelos membros do grupo jQuery-br, mas o que vc pode fazer nesse caso é criar dois array um para notas e outro para faltas, exemplo:
var notas = new Array();
var faltas = new Array();

$.each($("table tbody").children(), function(i, linha){
    notas[notas.length] = $(linha).children("td:eq(0)").text();
    faltas [faltas.length] = $(linha).children("td:eq(1)").text();
});

isso se os dados estivessem em uma table por exemplo, depois disse each, os dois arrays estão preenchidos, pode passar por ajax, que no PHP faz $_POST['notas[]']

Jefferson Heckler Stachelski
Programador Java Jr.
Fone:(51)9932-3778




--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.

Nick Marinho

unread,
Sep 17, 2012, 8:14:27 AM9/17/12
to php-b...@googlegroups.com
--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.
Bom acredito que se você fizer os inputs com os nomes[] e enviar esse input pro PHP ele recebe em forma de array, não ?

Amigos, me ajudem e me corrijam se eu estiver falando  besteira.

 

 

 

 

MSN nickm...@hotmail.com Google Talk nickm...@gmail.com Skype nickmarinho

Cassiano Ricardo Mourão

unread,
Sep 17, 2012, 8:21:58 AM9/17/12
to php-b...@googlegroups.com
jQuery serialize()/unserialize() nãos serve?

Leandro Santos Lopes

unread,
Sep 17, 2012, 8:50:37 AM9/17/12
to php-b...@googlegroups.com
Errei na minha expressão, na verdade nesta função, no lugar do array quero passar o form com os alunos na...

function adicionarNotas(idCadeira, idPeriodo, idTurma, saida, /*Quero passar aqui o form*/) 

... seguinte disposição cada grupo de inputs para cada aluno:

idaluno_tipo = insert ou update
idaluno_nota1
idaluno_ faltabim1
idaluno_nota2
idaluno_faltabim1
idaluno_substitutiva
idaluno_final

... e dentro da função passar este form (como array) para o ajax_content.php para assim realizar as adições ou atualizaçoes.

Cassiano Ricardo Mourão

unread,
Sep 17, 2012, 8:59:58 AM9/17/12
to php-b...@googlegroups.com
Percorre todos alunos, formando uma string pra cada um deles....
 
id:tipo:nota1:faltabim1:nota2:faltabim2:substitutiva:final
 
...separando-os por outro token, como @:
 
57:insert:8.5:3:7.4:5:substitutiva:4@49:update:6.9:0:8.0:8:substitutiva:2
 
Claro, é mais elegante serializar, como já disse (caso atenda), ou melhor ainda, chamar a função de atualização para cada aluno, um-a-um. Ou mesmo postar tudo.
 
Aliás, porque você precisa enviar como string? ainda não entendi.

Leandro Santos Lopes

unread,
Sep 17, 2012, 9:06:42 AM9/17/12
to php-b...@googlegroups.com
Bom, a função adicionarNotas é ajax e dentro dela tenho a linha:

ajax.send(...)

onde envio os parametros como POST para o ajax_content.php.

Cassiano Ricardo Mourão

unread,
Sep 17, 2012, 9:14:49 AM9/17/12
to php-b...@googlegroups.com
Eu não posso ver a função porque aqui no trabalho é bloquado o pastebin u_u'
Mas enfim...
 
Qual erro está dando quando você tenta passar o array? Até onde eu sei, era pra ser transparente isso.

Leandro Santos Lopes

unread,
Sep 17, 2012, 9:26:38 AM9/17/12
to php-b...@googlegroups.com
  1. function adicionarNotas(idCadeira, idPeriodo, idTurma, saida, /*Quero passar aqui o form*/) {
  2.     var objeto = document.getElementById(saida);
  3.     var ajax = requestAJAX();
  4.     ajax.open("POST", homeSite+"scripts/ajax_content.php", true);
  5.     ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //;charset=UTF-8
  6.     ajax.onreadystatechange = function() {
  7.         if (ajax.readyState == 4) { //Completo
  8.             if(ajax.status == 200) { //Sucesso
  9.                 var resultado = ajax.responseText;
  10.                 resultado = resultado.replace(/\+/g, " ");
  11.                 resultado = unescape(resultado);
  12.                 objeto.innerHTML = resultado;
  13.             } else {
  14.                 showDialog("Erro ao Mostrar as Turmas","Ocorreu um erro ao mostrar as turmas!<br>Informe        nos sobre ele enviado-o para: <a class='linkGO' href='mailto:tecno...@portalene.com'>tecnologia@...</a><br>Mensagem de erro: <i><u>"+ajax.statusText+"</i></u><p/><br><center><button onClick='goto(0)'>OK</button>","error",1);
  15.             }
  16.         }
  17.     }
  18.     ajax.send("token=adicionarNotas&idCadeira="+idCadeira+"&idPeriodo="+idPeriodo+"&idTurma="+idTurma/*e aqui quero passar o array para o ajax_content.php para adicionar e/ou atualizar as notas e faltas*/);
  19. }

Esta é a função amigo. Não há erros, só não tô conseguindo uma solução, mas me parece que vou ter que usar o serialize do jquery (não queria usar). O que me diz agora?

Leandro Santos Lopes

unread,
Sep 17, 2012, 10:29:18 AM9/17/12
to php-b...@googlegroups.com
Bom pessoal, muito obrigado pela ajuda de vocês.~
Meu problema já está resolvido. A solução foi usar o serialize do jquery conforme esse tuto que encontrei. 

Grato a todos!

Suissa

unread,
Sep 17, 2012, 4:48:22 PM9/17/12
to php-b...@googlegroups.com
Falei ehhehehe
Jean C. Nascimento aka Suissa
Technical Leader - Nodeware- SP
Reply all
Reply to author
Forward
0 new messages