Ir para conteúdo

Arquivado

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

Pita

Ajax e Formularios

Recommended Posts

ta, a estrutura do form é essa, e o esquema do .php?!?! eu faço: $var = $_POST["campo_form"]; ?eu quero pegar os dados q foram inseridos no form e inserir no banco de dados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza entendi a questao do formulario, agora ta ok e funcionando.

Porem surgiu um problema. Tipo, minha pagina grava.php grava no banco os dados e deveria enviar um resposta atraves de um alert() e redirecionar novamente para a pagina, ele faz isso mas não dentro da div onde o formulario foi carregado.

 

mysql_connect("localhost", "root", "");mysql_select_db("testes");mysql_query("insert into padrao values (null,'$nome','$sobrenome')");echo "<script>";echo "alert('Ok, inserido.');";echo "location.href='teste.htm';";echo "</script>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

erro: "resultado is not defined"

 

.htm

<form name="itinerario" id="itinerario" method="get" action="buscado_linhas.asp" >
<input type="hidden" name="buscado" id="buscado" value="ok" /> 
<input type="button" onclick="java script:ajaxForm(resultado,itinerario)" />

Ao selecionar uma linha ou rota, já vai abrir todo o caminho na parte da direita do site
<ul id="buscaLista" class="shadetabs">
<li>Buscar por:</li>
<li><a href="ajax/busca_linhas.asp" rel="buscaDiv" class="selected">Linha</a></li>
<li><a href="ajax/busca_rota.asp" rel="buscaDiv">Rota</a></li>
<li><a href="ajax/busca_rua.asp" rel="buscaDiv">Nome da Rua</a></li>
</ul>

<div id="buscaDiv" style="border:1px solid gray; width:450px; margin-bottom: 1em; padding: 10px">
<p>Se você está vendo esse texto, tem algo errado.</p>
</div>

<script type="text/javascript">
var countries=new ddajaxtabs("buscaLista", "buscaDiv")
countries.setpersist(true)
countries.setselectedClassTarget("link") //"link" or "linkparent"
countries.init()
</script>
</form>

<div id="resultado">
</div>

e o javascript é o seu código que já está linkado na página

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, meu código ajax ainda está rodando aqui no forum :D

 

Bem, parece que o pessoal está mais com dúvida no ajaxForm, então vamos lá:

 

Sintax é assim

ajaxForm(id_target,id_form)
observação muito importante, estamos passando uma strimg com o ID do target(onde vai ser exibido o retorno) e outra string com o ID do form, ou seja, são strings e não os objetos.

 

Exemplo:

<form id="texto_id_do_form" action="xxx.htm" method="post"><input type="text" name="nome_input"></form>
<div id="resultado_exibir_aqui"></div>
<input type="button" value="Enviar" onClick="java script:ajaxForm('resultado_exibir_aqui','texto_id_do_form')">

NÃO é possivel utilizar o ajaxForm dessa maneira "ajaxForm(this,this)" porque assim você está passando 2 objetos, e a função trabalha com 2 strings

 

Eu optei dessa maneira pq assim eu posso chamar o ajaxForm mesmo de fora do formulário(<form></form>), dando maior liberdade na hora de programar

 

Espero ter ajudado e prometo voltar aqui mais vezes

:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza entendi a questao do formulario, agora ta ok e funcionando.

Porem surgiu um problema. Tipo, minha pagina grava.php grava no banco os dados e deveria enviar um resposta atraves de um alert() e redirecionar novamente para a pagina, ele faz isso mas não dentro da div onde o formulario foi carregado.

 

mysql_connect("localhost", "root", "");
mysql_select_db("testes");

mysql_query("insert into padrao values (null,'$nome','$sobrenome')");

echo "<script>";
echo "alert('Ok, inserido.');";
echo "location.href='teste.htm';";
echo "</script>";

thescente,

a ideia básica do ajax é você não ficar dando refresh na tela ou carregando tudo novamente, o problema é que quando você dá um location.href você não refaz apenas o div do "teste.htm", você mata a "pagina.htm", ou seja, você está indo contra a ideia básica do ajax, sem falar que na chamada do ajaxForm você deve passar os textos do id do div e do formulário

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só para constar, alterei o código ajax no primeiro post mudando a linha abaixo

retorno=unescape(xmlhttp.responseText.replace(/\+/g," "));

para o seguinte código

retorno=unescape(xmlhttp.responseText);

 

Eu retirei o replace porque ele estava retirando os caracteres de mais("+"),

como o mais é utilizado no javascript, alguns códigos estavam dando erro quando a página era recebida pelo ajax

 

Qualquer dúvida posta aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vejo este assunto tópico é muito antigo, mas preciso urgentemente de uma solução para este problema:

 

- Peguei o código que envia os dados do form via ajax, porém só é possível o envio de no máximo 1.709 caracteres, se enviar um a mais da erro e não envia, como faço para resolver isto?

 

Muito obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz uma alteração no meu código(1º post) e adicionei a função AjaxFunction(id_target,funcao,url)

Essa função recebe um id_target, o nome de uma funcao a ser executada e a url da página que será chamada. Após receber a requisição do servidor, o código executa a função passando como parametro para a função o id_target e o retorno. Na página que chamou o ajax tem que ter uma função com a seguinte assintura: Nome_da_funcao(id, retorno){...código...}. Atenção: A AjaxFunction não preenche o objeto com o retorno, isso é preciso ser feito na funçao que será executada(se essa for a idéia)

 

abaixo tá um exemplo beeeeeeem simples

 

function FuncaoRetorno(id, retorno){
  alert(id);
  alert(retorno);
}

AjaxFunction('txt_email','FuncaoRetorno()','pagina_teste.php');

O código ainda pode apresentar algum problema quando a página retornar algum caracter especial que afete o javascript, mas ainda estou trabaljando nisso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos.

 

Pita, obrigado o código está bastante útil...

 

Mas... Estou tentando utiliza-lo para enviar um formulário e dá erro, exibindo uma caixa de alerta dizendo "ACESSO NEGADO", na linha do codigo indica que é na "abertura da conexão"

 

//Abre a conexao

xmlhttp.open(metodoEnvio,url,true);

 

O que faço, já tentei de tudo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos.

 

Pita, obrigado o código está bastante útil...

 

Mas... Estou tentando utiliza-lo para enviar um formulário e dá erro, exibindo uma caixa de alerta dizendo "ACESSO NEGADO", na linha do codigo indica que é na "abertura da conexão"

 

//Abre a conexao

xmlhttp.open(metodoEnvio,url,true);

 

O que faço, já tentei de tudo...

 

Consegui resolver.

 

Estava enviando pelo action do form da seguinte maneira:

<form id="login" name="login" method="get" action="java script:ajaxForm('target','id_form');" onSubmit='return false;'>

<input type="submit" style="cursor:hand" value="Entrar" size="20">

</form>

 

Mudei para:

<form id="login" name="login" method="get" action="login.asp" onSubmit='return false;'>

<input type="submit" style="cursor:hand" class="btn" onClick="LoadForm('lgn','login'); return false;" value="Entrar" size="20">

</form>

 

OK!!!

 

Mais uma vez agradeço ao Pita e a todos que colaboraram, quebrei a cabeça, mas achei.

 

Att

Kifo http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://www.brinquedosmagicos.com.br/2009/index.php

Abra a página e click em inicial.

 

Era pra carregar isso:

http://www.brinquedosmagicos.com.br/2009/p...s/produtos.html

 

Ele não carrega os css e js...

 

No menu inicial eu fiz isso:

<a href="java script:;" onclick="ajaxGet('produtos/produtos.html?acao=faleConosco&system=true',document.getElementById('conteudo'),true);">INICIAL</a>

 

Como eu faço pra carregar os js e css da pagina produtos ?

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos, estou tentando desenvolver um sistema em jsp e ajax, mas estou precisando que o formulário envie os dados para outro arquivo que ira abrir na div em que o formulario se encontra (ele fechara e o form e abrirá a outra página).

 

Vou exemplificar pra tornar mais fácil de responder:

 

Eu tenho o formCadastroAluno.jsp:

 

formCadastroUsuario.jsp

<html>

<head>

<title></title>

<link rel="stylesheet" href="menu_style.css" type="text/css" />

<link href="style.css" rel="stylesheet" type="text/css" />

<script src="../ajax.js"></script>

</head>

<body>

<form name="formCadastroUsuario" id="formCadastroUsuario" method="get" action="CadastrarUsuario.jsp" onsubmit='return false;'>

<table width="740" border="0" cellspacing="2px">

<tr>

<td colspan="4">

<label class="titulo">Cadastro de Usuários:</label>

<hr />

</td>

</tr>

<tr>

<td>

<label>Login:</label>

</td>

<td>

<label>Senha:</label>

</td>

<td colspan="2">

<label>Tipo Usuário:</label>

</td>

</tr>

<tr>

<td>

<input type="text" name="Login" id="Login" />

</td>

<td>

<input type="password" name="Senha" id="Senha" />

</td>

<td colspan="2">

<select name="Status_Usuario" id="Status_Usuario">

<option value="ALUNO">Aluno</option>

<option value="COORDENADOR">Coordenador</option>

<option value="PROFESSOR">Professor</option>

<option value="SECRETARIO">Secretário</option>

</select>

</td>

</tr>

<tr>

<td colspan="2">

<label>Nome:</label>

</td>

<td>

<label>Telefone:</label>

</td>

<td>

<label>Email:</label>

</td>

</tr>

<tr>

<td colspan="2">

<input type="text" name="Nome" id="Nome" size="50" />

</td>

<td>

<input type="text" name="Telefone" id="Telefone" />

</td>

<td>

<input type="text" name="Email" id="Email" />

</td>

</tr>

<tr>

<td>

<label>Endereço:</label>

</td>

<td>

<label>Bairro:</label>

</td>

<td>

<label>Cidade:</label>

</td>

<td>

<label>Estado:</label>

</td>

</tr>

<tr>

<td>

<input type="text" name="Endereco" id="Endereco" />

</td>

<td>

<input type="text" name="Bairro" id="Bairro" />

</td>

<td>

<input type="text" name="Cidade" id="Cidade" />

</td>

<td>

<select name="UF" id="UF">

<option value></option>

<option value="AC">Acre</option>

<option value="AL">Alagoas</option>

<option value="AM">Amazonas</option>

<option value="AP">Amapá</option>

<option value="BA">Bahia</option>

<option value="CE">Ceará</option>

<option value="DF">Distrito Federal</option>

<option value="ES">Espírito Santo</option>

<option value="GO">Goiás</option>

<option value="MA">Maranhão</option>

<option value="MT">Mato Grosso</option>

<option value="MS">Mato Grosso do Sul</option>

<option value="MG">Minas Gerais</option>

<option value="PA">Pará</option>

<option value="PB">Paraíba</option>

<option value="PR">Paraná</option>

<option value="PE">Pernambuco</option>

<option value="PI">Piauí</option>

<option value="RJ">Rio de Janeiro</option>

<option value="RN">Rio Grande do Norte</option>

<option value="RO">Rondônia</option>

<option value="RS">Rio Grande do Sul</option>

<option value="RR">Roraima</option>

<option value="SC">Santa Catarina</option>

<option value="SE">Sergipe</option>

<option value="SP">São Paulo</option>

<option value="TO">Tocantins</option>

</select>

</td>

</tr>

<tr>

<td colspan="4">

<label>Curso:</label>

</td>

</tr>

<tr>

<td colspan="4">

<input type="text" name="Curso" id="Curso" />

</td>

</tr>

<tr>

<td colspan="4">

<input type="button" value="Cadastrar" onclick="ajaxForm('div_principal','formCadastroUsuario')">

</td>

</tr>

</table>

</form>

</body>

</html>

 

Eu utilizo o arquivo ajax.js para enviar os dados:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos, estou tentando desenvolver um sistema em jsp e ajax, mas estou precisando que o formulário envie os dados para outro arquivo que ira abrir na div em que o formulario se encontra (ele fechará o form e abrirá a outra página).

 

Não tô conseguindo usar o AjaxForm(), ele dá o eguinte erro:

Erros de Script da Página da Web

Agente de Usuário: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Carimbo de data/hora: Tue, 24 Nov 2009 16:25:41 UTC

Mensagem: Objeto esperado

Linha: 141

Caractere: 1

Código: 0

URI: http://localhost:8084/SIM/

;

 

Eu olhei o form e essa linha é a linha do FormAjax();

 

Vou exemplificar pra tornar mais fácil de responder:

Eu tenho o formCadastroUsuario.jsp que é aberto dentro da 'div_principal' na página index.jsp e deve ser enviado para a cadastroUsuario, mas não consigo enviar os dados do formulário. espero que alguem me ajude... Vou mandar os arquivos para vcs saberem onde é o erro... O que devo modificar para que a FormAjax funcione corretamente...

Estou esperando a ajuda de vocês...

 

 

-------------------------------------------------------------------------index.jsp:

<%-- 
    Document   : index
    Created on : 17/11/2009, 15:45:49
    Author     : Suesley
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>.: SIM - Sistema Integrado do Mestrado :.</title>
        <link rel="stylesheet" href="menu_style.css" type="text/css" />
        <link href="style.css" rel="stylesheet" type="text/css" />
        <script src="ajax.js"></script>
        <script src="instrucao.js"></script>
        <script> 
            window.onload = function(){ 
                AjaxLink('div_principal','TESTE.jsp'); 
            } 
        </script>
    </head>
    <body>
        <div id="externa">
            <div id="cabecalho">
                <br />
                <img src="imagens/cabecalho2.png" />
            </div>          
            <div id="menu_principal">
               <hr />
                <ul class="menu">
                    <li class="top"><a href="#" target="_self" class="top_link"><span>Cadastrar</span></a>
                        <ul class="sub">
                            <li><a href="#" target="_self"><span>Aluno
                                          
                                          
                                          
                                          
                                <strong>+</strong></span></a>
                                <ul class="subsub">
                                    <li><a href="#" target="_self" onclick="AjaxLink('div_principal','formularios/formCadastroAluno.jsp')">Novo</a></li>
                                    <li><a href="#" target="_self">Alterar</a></li>
                                    <li><a href="#" target="_self">Excluir</a></li>
                                </ul>
                            </li>
                            <li><a href="#" target="_self" onclick="AjaxLink('div_principal','formularios/formCadastroProfessor.jsp')">Professor</a></li>
                            <li><a href="#" target="_self" onclick="AjaxLink('div_principal','formularios/formCadastroDisciplina.jsp')">Disciplina</a></li>
                            <li><a href="#" target="_self" onclick="AjaxLink('div_principal','formularios/formCadastroUsuario.jsp')">Usuário</a></li>
                            <li><a href="#" target="_self" onclick="AjaxLink('div_principal','formularios/formCadastroPesquisa.jsp')">Projeto de Pesquisa</a></li>
                        </ul>
                    </li>
                    <li class="top"><a href="#" target="_self" class="top_link"><span>Matricular</span></a>
                        <ul class="sub">
                            <li><a href="#" target="_self">Aluno em Disciplina</a></li>
                            <li><a href="#" target="_self">Alterar Matricula</a></li>
                            <li><a href="#" target="_self">Excluir Matricula</a></li>
                        </ul>
                    </li>
                    <li class="top"><a href="#" target="_self" class="top_link"><span>Registrar</span></a>
                        <ul class="sub">
                            <li><a href="#" target="_self">Aulas e Notas</a></li>
                        </ul>
                    </li>
                    <li class="top"><a href="#" target="_self" class="top_link"><span>Consultar</span></a>
                        <ul class="sub">
                            <li><a href="#" target="_self">Aluno</a></li>
                            <li><a href="#" target="_self">Professor</a></li>
                            <li><a href="#" target="_self">Disciplina</a></li>
                            <li><a href="#" target="_self">Coodenador</a></li>
                            <li><a href="#" target="_self">Secretário</a></li>
                            <li><a href="#" target="_self">Projeto de Pesquisa</a></li>
                        </ul>
                    </li>
                    <li class="top"><a href="#" target="_self" class="top_link"><span>Documentos</span></a>
                        <ul class="sub">
                            <li><a href="#" target="_self">Enviar</a></li>
                            <li><a href="#" target="_self">Buscar</a></li>
                        </ul>
                    </li>
                    <li class="top"><a href="#" target="_self" class="top_link"><span>Históricos</span></a></li>
                </ul>

               <hr />
            </div>
            
            <div id="div_principal">
                <img src="imagens/ajax-loader.gif" />
            </div>
            
            <div id="inferior">
                <a href="http://www.ufersa.edu.br/mcc" target="_blank"><img src="imagens/mestrado.gif" width="40px" height="40px"></a>
                    
                <a href="http://www.uern.br/" target="_blank"><img src="imagens/uern.gif" width="35px" height="40px"></a>
                    
                <a href="http://www.ufersa.edu.br/" target="_blank"><img src="imagens/ufersa.gif" width="60px" height="40px"></a>
            </div>
        </div>
    </body>
</html>

 

---------------------------------------------------------------formCadastroUsuario.jsp:

<html>
    <head>
        <title></title>
        <link rel="stylesheet" href="menu_style.css" type="text/css" />
        <link href="style.css" rel="stylesheet" type="text/css" />
        <script src="../ajax.js"></script>
    </head>
    <body>
        <form name="formCadastroUsuario" id="formCadastroUsuario" method="get" action="CadastrarUsuario.jsp" onsubmit='return false;'>
        <table width="740" border="0" cellspacing="2px">
            <tr>
                <td colspan="4">
                    <label class="titulo">Cadastro de Usuários:</label>
                    <hr />
                </td>
            </tr>
            <tr>
                <td>
                    <label>Login:</label>
                </td>
                <td>
                    <label>Senha:</label>
                </td>
                <td colspan="2">
                    <label>Tipo Usuário:</label>
                </td>
            </tr>
            <tr>
                <td>
                    <input type="text" name="Login" id="Login" />
                </td>
                <td>
                    <input type="password" name="Senha" id="Senha" />
                </td>
                <td colspan="2">
                    <select name="Status_Usuario" id="Status_Usuario">
                        <option value="ALUNO">Aluno</option>
                        <option value="COORDENADOR">Coordenador</option>
                        <option value="PROFESSOR">Professor</option>
                        <option value="SECRETARIO">Secretário</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <label>Nome:</label>
                </td>
                <td>
                    <label>Telefone:</label>
                </td>
                <td>
                    <label>Email:</label>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <input type="text" name="Nome" id="Nome" size="50" />
                </td>
                <td>
                    <input type="text" name="Telefone" id="Telefone" />
                </td>
                <td>
                    <input type="text" name="Email" id="Email" />
                </td>
            </tr>
            <tr>
                <td>
                    <label>Endereço:</label>
                </td>
                <td>
                    <label>Bairro:</label>
                </td>
                <td>
                    <label>Cidade:</label>
                </td>
                <td>
                    <label>Estado:</label>
                </td>
            </tr>
            <tr>
                <td>
                    <input type="text" name="Endereco" id="Endereco" />
                </td>
                <td>
                    <input type="text" name="Bairro" id="Bairro" />
                </td>
                <td>
                    <input type="text" name="Cidade" id="Cidade" />
                </td>
                <td>
                    <select name="UF" id="UF">
                        <option value></option>
                        <option value="AC">Acre</option>
                        <option value="AL">Alagoas</option>
                        <option value="AM">Amazonas</option>
                        <option value="AP">Amapá</option>
                        <option value="BA">Bahia</option>
                        <option value="CE">Ceará</option>
                        <option value="DF">Distrito Federal</option>
                        <option value="ES">Espírito Santo</option>
                        <option value="GO">Goiás</option>
                        <option value="MA">Maranhão</option>
                        <option value="MT">Mato Grosso</option>
                        <option value="MS">Mato Grosso do Sul</option>
                        <option value="MG">Minas Gerais</option>
                        <option value="PA">Pará</option>
                        <option value="PB">Paraíba</option>
                        <option value="PR">Paraná</option>
                        <option value="PE">Pernambuco</option>
                        <option value="PI">Piauí</option>
                        <option value="RJ">Rio de Janeiro</option>
                        <option value="RN">Rio Grande do Norte</option>
                        <option value="RO">Rondônia</option>
                        <option value="RS">Rio Grande do Sul</option>
                        <option value="RR">Roraima</option>
                        <option value="SC">Santa Catarina</option>
                        <option value="SE">Sergipe</option>
                        <option value="SP">São Paulo</option>
                        <option value="TO">Tocantins</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td colspan="4">
                    <label>Curso:</label>
                </td>
            </tr>
            <tr>
                <td colspan="4">
                    <input type="text" name="Curso" id="Curso" />
                </td>
            </tr>
            <tr>
                <td colspan="4">
                    <input type="button" value="Cadastrar" onclick="ajaxForm('div_principal','formCadastroUsuario')">
                </td>
            </tr>
        </table>
      </form>
    </body>
</html>

---------------------------------------------------------ajax.js

//INICIALIZA AS VARIAVEIS PARA CONTROLE DA FILA
var ifila = 0
var fila = new Array();
//fila[X][0] - Div onde sera carregada a pagina.
//fila[X][1] - Pagina que sera chamada
//fila[X][2] - Metodo de envio
//fila[X][3] - Campos do form concatenados no padrao para serem enviados. Null caso seja um link
//fila[X][4] - Funcao que sera executada ao termino do processo. Null caso seja um ajaxLink/ajaxForm



//INICIALIZA O OBJETO QUE IRA FAZER AS SOLICITACOES
try{
	xmlhttp = new XMLHttpRequest();// Mozilla, Safari, Firefox, etc...
	try {
		if (xmlhttp.overrideMimeType) {
			//Se possível, ignora cabecalho usado pelo servidor e forca o padrao "text/xml". Alguns navegadores exigem esse padrao e pode dar erro se o servidor nao utilizar ele
			xmlhttp.overrideMimeType('text/xml');
		}
	} catch (e1) { }
}catch(e2){
	try{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");// Internet Explorer
	}catch(e3){
		try{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");// Internet Explorer
		}catch(e4){
			//tratamento para alguma outra forma de implementar XMLHTTP
			xmlhttp = false;
		}
	}
}
if (!xmlhttp){
	//Nao conseguiu instanciar o objeto xmlhttp para fazer as solicitacoes
	alert("AJAX error. Your browser must support XMLHttpRequest object or enable use of scripting.");
}



//GUARDA NA FILA O ID DO OBJETO E A URL QUE SERAO CARREGADOS PELO LINK CLICADO
function AjaxLink(id_target,url){
	//Exibe mensagem de que esta carregando a pagina no objeto de ID informado
	ajaxMensagemCarregando(id_target);

	//Adiciona a solicitacao na fila
	fila[fila.length]=[id_target,url,"GET",null,null];

	//Se nao tem conexoes na fila, inicia a execucao
	if(fila.length==1){
		ajaxRun();
	}
	return;
}



//GUARDA NA FILA O ID DO OBJETO E O FORM QUE SERAO CARREGADOS PELO LINK CLICADO
function AjaxForm(id_target,id_form){
	//Pega a pagina que sera chamada pelo form
	var url = document.getElementById(id_form).action;
	//Busca metodo de envio definido no form
	var metodoEnvio = document.getElementById(id_form).method.toUpperCase();
	//Busca os elementos do form que serao enviados para a pagina solicitada
	var elementos_form = BuscaElementosForm(id_form);

	//Exibe mensagem de que esta carregando a pagina no objeto de ID informado
	ajaxMensagemCarregando(id_target);

	//Adiciona a solicitacao na fila
	fila[fila.length]=[id_target,url,metodoEnvio,elementos_form,null];

	//Se nao tem conexoes na fila, inicia a execucao
	if(fila.length==1){
		ajaxRun();
	}
	return;
}
function AjaxFunction(id_target,funcao,url){
	//Adiciona a solicitacao na fila
	fila[fila.length]=[id_target,url,"GET",null,funcao.replace('()',"")];

	//Se nao tem conexoes na fila, inicia a execucao
	if(fila.length==1){
		ajaxRun();
	}
	return;
}



//EXECUTA A PROXIMA SOLICITACAO DA FILA
function ajaxRun(){
	var url = fila[ifila][1];

	//Define o metodo de envio (GET ou POST)
	var metodoEnvio;
	if (fila[ifila][3]==null){
		//Se for Link/Funcao, utiliza GET
		metodoEnvio = "GET";
	}else{
		//Se for Form, define o metodo de envio e prepara a url
		metodoEnvio = fila[ifila][2];
		if (metodoEnvio=="" || metodoEnvio==null){
			//Se nao tiver definido nada, usa POST
			metodoEnvio = "POST";
		}
		if (metodoEnvio=="GET"){
			//Metodo GET passa as informacoes na linha da url
			url = url + "?" + fila[ifila][3];
		}
	}

	//Abre a conexao
	xmlhttp.open(metodoEnvio,url,true);

	//Seta as funcoes que irao tratar a mudanca de estado do objeto XMLHTTP
	xmlhttp.onreadystatechange=ajaxXMLHTTP_StateChange;

	//Executa a solicitacao
	if (metodoEnvio=="POST"){
		//Metodo POST precisa definir este RequestHeader
		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		//Metodo POST passa as variaveis pelo metodo Send
		xmlhttp.send(fila[ifila][3]);
	}else{
		xmlhttp.send(null);
	}
	return;
}



//FUNCAO EXECUTADA QUANDO ALTERAR O STATUS DA SOLICITACAO (readyState)
function ajaxXMLHTTP_StateChange() {
	//0-Nao inicializado, 1-Carregando, 2-Carregado, 3-Interativo, 4-Completo
	if (xmlhttp.readyState==1){
		ajaxXMLHTTP_StateChange_Carregando(fila[ifila][0], fila[ifila][4]);//Quando iniciar a solicitacao
	}else{
		if (xmlhttp.readyState==4){
			ajaxXMLHTTP_StateChange_Completo(xmlhttp, fila[ifila][0], fila[ifila][4]);//Quando estiver completa a solicitacao
		}
	}
}

//FUNCAO EXECUTADA QUANDO INICIAR A SOLICITACAO (readyState=1)
function ajaxXMLHTTP_StateChange_Carregando(id, funcao){
   	if(funcao==null){
		//Exibe mensagem de que está carregando a página no objeto de ID que solicitacao esta sendo feita
		ajaxMensagemCarregando(id);
	}
	return;
}

//FUNCAO EXECUTADA QUANDO A SOLICITACAO ESTIVER COMPLETA (readyState=4)
function ajaxXMLHTTP_StateChange_Completo(xmlhttp, id_retorno, funcao){
	var retorno;

	//Verifica o status da pagina de retorno
	if (xmlhttp.status == 200 || xmlhttp.status==0) {
		//Caso o status seja 200(Sucesso) ou nao utilize servidor(chamada local [C:\...]), trata o valor retornado
		retorno=xmlhttp.responseText;
//		retorno=retorno.replace(/\+/g," ");
		retorno=unescape(retorno);
	}else{
		//Caso o status ainda nao foi tratado, chama a funcao de tratamento de pagina de erro
		retorno=ajaxPaginaErro(xmlhttp);
	}
	if(funcao==null){
		//Exibe o valor retornado no objeto de ID informado
		document.getElementById(id_retorno).innerHTML=retorno;
	}else{
		//Se definiu uma funcao, executa esta funcao
		eval(funcao+"('"+id_retorno+"','"+retorno+"');");
	}
	// executa scripts
	ExtraiScript(retorno);

	//passa para a proxima posicao da fila
	ifila++;
	if(ifila<fila.length){
		//Caso tenha mais solicitacoes na fila, executa a proxima
		setTimeout("ajaxRun()",20);
	}else{
		//Caso nao tenha mais solicitacoes na fila, reinicia a fila
		fila = null;
		fila = new Array();
		ifila = 0;
	}
	return;
}

//FUNCAO PARA RETORNAR A MENSAGEM DE ERRO QUANDO O SERVIDOR RETORNAR UMA PAGINA DE ERRO
function ajaxPaginaErro(xmlhttp){
	var retorno;
	switch (xmlhttp.status) {
		case 404:
			return "Página não encontrada!!!";
			break;
		case 500:
			return "Erro interno do servidor!!!";
			break;
		default:
			return "Erro desconhecido!!!<br>" + xmlhttp.status + " - " + xmlhttp.statusText.replace(/\+/g," ");
	}
}

//FUNCAO PARA RETORNAR A MENSAGEM DE QUE ESTA CARREGANDO A PAGINA
function ajaxMensagemCarregando(id){
	//document.getElementById(id).innerHTML = "<img src='imagens/ajax-loader.gif'";
}

//FUNCAO PARA PEGAR OS CODIGOS SCRIPT
function ExtraiScript(texto){
	var ini, pos_src, fim, codigo, texto_pesquisa;
	var objScript = null;
	//Joga na variavel de pesquisa o texto todo em minusculo para na hora da pesquisa nao ter problema com case-sensitive
	texto_pesquisa = texto.toLowerCase()
	// Busca a primeira tag <script
	ini = texto_pesquisa.indexOf('<script', 0)
	// Executa o loop enquanto achar um <script
	while (ini!=-1){
		//Inicia o objeto script
		var objScript = document.createElement("script");

		//Busca se tem algum src a partir do inicio do script
		pos_src = texto_pesquisa.indexOf(' src', ini)
		// Define o inicio para depois do fechamento dessa tag
		ini = texto_pesquisa.indexOf('>', ini) + 1;

		//Verifica se este e um bloco de script ou include para um arquivo de scripts
		if (pos_src < ini && pos_src >=0){//Se encontrou um "src" dentro da tag script, esta e um include de um arquivo script
			//Marca como sendo o inicio do nome do arquivo para depois do src
			ini = pos_src + 4;
			//Procura pelo ponto do nome da extencao do arquivo e marca para depois dele
			fim = texto_pesquisa.indexOf('.', ini)+4;
			//Pega o nome do arquivo
			codigo = texto.substring(ini,fim);
			//Elimina do nome do arquivo os caracteres que possam ter sido pegos por engano
			codigo = codigo.replace("=","").replace(" ","").replace("\"","").replace("\"","").replace("\'","").replace("\'","").replace(">","");
			// Adiciona o arquivo de script ao objeto que sera adicionado ao documento
			objScript.src = codigo;
		}else{//Se nao encontrou um "src" dentro da tag script, esta e um bloco de codigo script
			// Procura o final do script
			fim = texto_pesquisa.indexOf('</script>', ini);
			// Extrai apenas o script
			codigo = texto.substring(ini,fim);
			// Adiciona o bloco de script ao objeto que sera adicionado ao documento
			objScript.text = codigo;
		}

		//Adiciona o script ao documento
		document.body.appendChild(objScript);
		// Procura a proxima tag de <script
		ini = texto.indexOf('<script', fim);

		//Limpa o objeto de script
		objScript = null;
	}
}



//FUNCAO PARA PEGAR OS ELEMENTOS DO FORM
function BuscaElementosForm(idForm) {
	var elementosFormulario = document.getElementById(idForm).elements;
	var qtdElementos = elementosFormulario.length;
	var queryString = "";
	var elemento;

	//Cria uma funcao interna para concatenar os elementos do form
	this.ConcatenaElemento = function(nome,valor) {
								if (queryString.length>0) {
									queryString += "&";
								}
								//queryString += encodeURIComponent(nome) + "=" + encodeURIComponent(valor);
								queryString += encodeURI(nome) + "=" + encodeURI(valor).replace("&", "%26");
							 };

	//Loop para percorrer todos os elementos
	for (var i=0; i<qtdElementos; i++) {
		//Pega o elemento
		elemento = elementosFormulario[i];
		if (!elemento.disabled) {
			//Trabalha com o elemento caso ele nao esteja desabilitado
			switch(elemento.type) {
				//Realiza a acao dependendo do tipo de elemento
				case 'text': case 'password': case 'hidden': case 'textarea':
					this.ConcatenaElemento(elemento.name,elemento.value);
					break;
				case 'select-one':
					if (elemento.selectedIndex>=0) {
						this.ConcatenaElemento(elemento.name,elemento.options[elemento.selectedIndex].value);
					}
					break;
				case 'select-multiple':
					for (var j=0; j<elemento.options.length; j++) {
						if (elemento.options[j].selected) {
							this.ConcatenaElemento(elemento.name,elemento.options[j].value);
						}
					}
					break;
				case 'checkbox': case 'radio':
					if (elemento.checked) {
						this.ConcatenaElemento(elemento.name,elemento.value);
					}
					break;
			}
		}
	}
	return queryString;
}

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.