Ir para conteúdo

POWERED BY:

Arquivado

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

Willian Aquino

[Resolvido] Usando $ajax jquery

Recommended Posts

Boa tarde Pessoal,

 

É o seguinte. Tenho um Script que tenta enviar dados de um formulário para uma página APX, mas ocorre um erro.

A página em APX está em um cliente e por isso não sei o que está lá e como eu trabalho com um CMS chamado Kentico ele adiciona um form generico no inicio da página, já tentei tirar esse form e colocar um na mão, mas não consegui. O geito que encontrei é mandar o formulário via Ajax com jquery. Fiz um teste local com PHP e recebi os dados perfeitamente, mas quando coloco o link da página do Cliente da erro.

 

Para entender melhor.

 

Eu tenho o form correto funcioando, ja até me loguei no site, mas o problema que não posso dolocar o Form porque o CMS já coloca um por default para mim. Então eu coloco os inputs e tenho que montar o js que monte esse form para mim.

 

Agradeço se alguem poder me ajudar com essa questão.

 

Obrigado!

 

 


$(document).ready(function(){
	$("#form1").submit(function(){
	return false;
});

$("#LoginView1_Login1_LoginButton").click(function(){
	envia_form();
});


function envia_form() {
	$("#resultado").empty();

	var cliente = $("#LoginView1_Login1_txtEmpresa").val();
	var usuario = $("#LoginView1_Login1_User").val();
	var senha = $("#LoginView1_Login1_Password").val();


	$.ajax({
		type: "GET",
		url: "aqui fica o link",
		dataType: "html",
		data: "cliente=" + cliente + "&usuario=" + usuario +"&senha"+ senha,


		success: function(response){
			$("#resultado").append(response);
		},

		error: function(erro){
			alert("Ocorreu um erro durante a requisição" + erro);
		}
	});   
}
});

Compartilhar este post


Link para o post
Compartilhar em outros sites
Fiz um teste local com PHP e recebi os dados perfeitamente, mas quando coloco o link da página do Cliente da erro.

sim, pois os navegadores bloqueiam requisições externas via ajax.

você terá q trabalhar com ajax via GET e com retorno jSON.

 

 

ou então usar a tua linguagem server-side para tal.(sem javascript)

Compartilhar este post


Link para o post
Compartilhar em outros sites

William,

 

Obrigado pela resposta.

 

Então pelo que entendi não posso fazer nada a não ser montar um html e colocar no action o link?

 

Porque não posso trabalhar com Json porque não está do meu lado a aplicação e sim do cliente, não tenho retorno nenhum.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

então você terá que deixar o ajax de lado, e fazer tudo com o teu server-side.

 

php possui uma lib chamada cURL, ideal para esse tipo de coisa.

Em ASP não sei te dizer.

 

 

Existem algumas técnicas para ajax crossdomain, pesquise se "achar que vale a pena".

ps: não entendi oq você quis dizer sobre montar o html.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza William, vou pençar um outra forma.

 

Esquece sobre o HTML rsrsrs

 

Eu também estava tentando montar um Form com jquery e devolver para a página o form pronto com a action e outras atributos, mas era redirecionado para o página sem os campos preenchidos e o usuário tinha que tentar se logar novamente.

 

Será que també não da por causa da segurança?

 


window.logarArgoit = function(fields) {
 var empresa = $(fields.empresa).val();
 if (empresa == ""){ 
   alert('Favor preencher o campo Empresa.');
   return false;
 }

 var usuario = $(fields.usuario).val();
 if (usuario == ""){
   alert('Favor preencher o campo Usuário.');
   return false;
 }

 var senha = $(fields.senha).val();
 if (senha == ""){
   alert('Favor preencher o campo Senha.');
   return false;
 }

 	return true;
};

window.argoit_preparar = function(fields) {
 $(fields.form)
   .attr('action', 'link da página')
   .attr('onSubmit', 'return logar()')
   .attr('target', '_blank');
};

 

 

NO HTML fiz essas funções

 


<script>

function logar() {
 return logarArgoit({
   form: '#form1',
   empresa: '#LoginView1_Login1_txtEmpresa',
   usuario: '#LoginView1_Login1_User',
   senha: '#LoginView1_Login1_Password'
 });
}



$(document).ready(function() {
 argoit_preparar({
   form: '#form1',
   empresa: '#LoginView1_Login1_txtEmpresa',
   usuario: '#LoginView1_Login1_UserName',
   senha: '#LoginView1_Login1_Password'
 });
});

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

uê cara.. pq você não esquece o js, e faz assim do seu lado:

 

<form method="post" action="http://www.site.com.br/action_do_form.aspx">

entendeu ?

o seu cliente vai digitar no form q está do seu lado, e o action está apontando diretamente para o action lá final.

 

 

 

pensar é com S, e não Ç.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então William, eu uso um CMS e ele coloca um form default para mim, e se eu colocar um outro form dentro desse ele vai chamar o 1º form, que é o default e não o meu.

 

É isso que acontece.

 


<body class="LTR Gecko8 PTBR" >
   <form method="post" action="/" onsubmit="javascript:return WebForm_OnSubmit();" id="form1">

         <!-- HTML da página -->

               <!-- Meu formulário para envio -->
	<form action="meu link para a página ASPX" method="post" name="form2" id="form2" >
                      meus inputs
                      <input type="submit">
               </form>
    </form>

</body>

 

Por isso não posso colocar um form na página tenho que fazer um com JS. Porque já tem uma formulário na página e eu não consigo tirar ele de lá.

 

Já tentei tirar com remove(#form1) mas a página fica em branco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, então deixe o CMS colocar o form dele, e troque com js o action do form que o CMS colocou.

 

Entendeu?

o único papel do js, é trocar o valor do atributo action.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, então deixe o CMS colocar o form dele, e troque com js o action do form que o CMS colocou.

 

Entendeu?

o único papel do js, é trocar o valor do atributo action.

 

Então já fasso isso

 


window.argoit_preparar = function(fields) {
 $(fields.form)
   .attr('action', 'link_da_página.aspx')
   .attr('onSubmit', 'return logar()')
   .attr('target', '_blank');
};

 

Abre a página certinho mas não se loga, cai na página para o usuário digitar os campos novamente.

 

É isso que eu não entendo, como chama a página com os campos criados certinho com nome e id e a página não pega esse valores.

 

Já copiei e coloquei o html que o cara me mando, subi no FTP e testei e consegui me logar de boa, mas quando coloco no CMS e crio a action com o js não vai. É f@%&*.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Abre a página certinho mas não se loga, cai na página para o usuário digitar os campos novamente.

pela experiência que tive com aspx, deve ter alguns input type="hidden" q você deve copiar do form original, e colocar no seu também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

William,

 

Perfeito tem sim, já estão na página.

 


<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" />
<input type="hidden" name="hdnClienteTipo" id="hdnClienteTipo" value="CL" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

então fiquei sem idéias cara... tem alguma coisa q não tá 'passando'.. q está 'incorreta'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então fiquei sem idéias cara... tem alguma coisa q não tá 'passando'.. q está 'incorreta'.

 

Então William,

 

Eu fiz um teste aqui. Comentei o .attr('action', 'http://link_da_pagina.apsx') e coloquei em um form com action para esse link. Subi novamente no FTP e tentei me logar e foi.

 

Agora fiquei bravo. Porque com o js não vai? Se ele está redirecionando certinho para a página.

 

Já dei um alert no s inputs e os valores estão corretos.

 

Para mim os inputs não estão sendo enviados, mas não tem como eu testar isso porque não tenho a página do meu lado.

 

Acho que terei que pedir para eles fazerem um formulário do lados deles me mandar um link e eu colocar no Iframe.

 

Vai ficar porco mas acho que será o geito.

 

Valeu pela ajuda, muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

aparece algum erro no console ? ctrl+shift+j no firefox ?

 

não sei.. pelo visto é algum problema entre o html q você quer e o cms.

 

analise o html gerado. Ctrl+U

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então já fasso isso :

window.argoit_preparar = function(fields) {
 $(fields.form)
   .attr('action', 'link_da_página.aspx')
   .attr('onSubmit', 'return logar()')
   .attr('target', '_blank');
};

 

Tente assim:

window.argoit_preparar = function(fields) {
$(fields.form).attr({
action:'link_da_página.aspx',
onSubmit:'return logar()',
target:'_blank' });
};

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Primeiramente Feliz natal a todos.

 

Daniel,

 

Não funcionou tb.

 

Já olhei o console e erros e não da erro nenhum, não parece nada.

 

Tem alguma maneira de eu ver os calores sendo passados no request?

 

para saber se os valores dos campos estão sendo enviados?

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem sim, dá uma lida aqui:

http://wbruno.com.br/blog/2011/04/14/como-debugar-ajax-firebug/

 

 

qual é o resultado do Ctrl+U que eu "pedi" ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o form sem a action do geito que deixei.

 

Só quando eu dou um submit que ele comoca o action no form, a função e o target.

 

 

Mas acho que agora descobri.

 

Olhando o HTML que eles me mandaram, percebi que os inputs com o name e id tem nomes diferentes.

 

Peguei um aruivo PHP para receber esses dados com o $_POST e nada vinha, mudei os nomes deixando iguais.

 

E funcionou!!!!

 

Para mim isso não tinha nada ver ou tem?

 

Vou pedir para a empresa mudar a forma que eles resgatam os dados para ter certeza.

 

Mas mesmo assim vou dar uma olhada no link que você me mando, para apreder e já ver se é isso mesmo.

 

Valeu Bruno e Daniel.

 

William,

 

Só uma contribuição com o Forum.

 

Quando errei meu usuário e senha deu um erro no CSS. É só colocar um no-repeat na imagem.

 

.message.error {

background-image: url("http://forum.imasters.com.br/public/style_images/imasters-2011/exclamation.png");

background-repeat: no-repeat;

}

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Muito Obrigado William Bruno pela força, mas infelizmente teve ser mesmo com iframe, os caras deram um monte de desculpa e tal. Deixei queto e fiz o iframe mesmo, mas o meu script está certo, funciona perfeitamente.

 

Fiz um teste em uma página PHP e envia os dados do Form certinho e valida ainda.

 

Abraços!

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.