Ir para conteúdo

POWERED BY:

Arquivado

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

Andrius

Problema com Jquery (Ajax)

Recommended Posts

Ola a todos, sou novo aqui no fórum mais já tenho alguma experiencia em relação a programação para web e programação em geral (Jogos e Softwares), tenho um pequeno problema que está ocorrendo com meu sistema web espero que vocês possam me ajudar.
Não irei postar códigos ou link para acesso do mesmo ainda, já que o problema é relacionado a âmbito geral do Javascript, HTML, Servidor e não de meu código creio eu.
No entanto se for necessário, responda este tópico com o que precisam ou falem comigo por mp.
Introdução:
Irei passar rapidamente aqui como o sistema funciona, pois é vital para o entendimento do problema.
Após logar você tem acesso a um menu com varias opções e cada opção dessas carrega em uma div dessa pagina o conteúdo da pagina através do método Load da Jquery, ou seja a pagina em si nunca é atualizada totalmente.
Após acessar um link dessa pagina você normalmente é carregado um campo para pesquisar informações (usuários, duplicatas, etc etc) dependendo do link escolhido e juntamente com este campo um botão para cadastrar o respectivo tema.
Ao clicar no botão é carregado em uma div o conteúdo e aberto em uma janela modal (Dialog do JQueryUI).
Dentro desta Janela Modal podem existir botões onde você clica e é aberto uma nova janela modal (Outro Dialog da JQueryUI) para pesquisar informações e retornar a modal anterior.
Exemplo: Um Cadastro de Pessoas tem o input município e um botão, ao clicar no botão é aberto um modal para pesquisar os municípios, ao escolher o município, o valor do mesmo é retornado para o modal anterior e colocado no input município o valor.
O Problema:
Eu tenho dois cadastros neste sistema, sendo um de Pessoas (Físicas ou Jurídicas) e outro de Duplicatas.
- O de Pessoas tem um campo para pesquisar municípios e países.
- O de Duplicatas tem um campo para pesquisar Pessoas.
Após cadastrar ou utilizar o campo de cadastro de Pessoas e indo utilizar o de Duplicatas na hora de pesquisar Pessoas, vários input que deveriam retornar corretamente ficam em branco.
E ao utilizar de campo de cadastro de Duplicatas e indo depois utilizar o de Pessoas, na hora de pesquisar municípios o mesmo retorna em branco.
Não a pesquisa que retorna em branco e sim ao clicar no município ou pessoa desejada os inputs que seriam preenchidos não retornam valor.
Se eu atualizar a pagina e ir naquele link tudo funciona normal.
O que ocorre:
No Cadastro de Duplicatas eu tenho o input com o id = municipio.
Apos utilizar ele e ir no cadastro de pessoas, o input que retorna o valor da pesquisa de municípios tem o id = municipio.
Pegando o caso contrario (Indo ao Cadastro de Pessoas e Depois Cadastro de Duplicatas).
o Cadastro de pessoas tem vários inputs que tem o mesmo id do retorno da pesquisa de Pessoas no Cadastro de Duplicatas.
A Solução:
- Ids Diferentes
Já funciona e eu ja testei, mais fica maçante, pois tem vários campos genéricos que eu tenho de usar o mesmo valor como endereço e município, e ficar utilizando um nome para cada parte de cadastro, se torna maçante a manutenção.
A Solução Gambiarra Atual:
Eu consegui resolver este problema utilizando a seguinte solução abaixo.
As Janelas Modais sempre tem 2 botões, sendo um para cadastrar ou atualizar o conteúdo e o outro para fechar a janela, na ação deste botão de fechar a janela eu coloquei a seguinte ação, antes de fechar a janela modal.
//Limpeza de Campos
$("#form-duplicata input").each(function() {
	var local = $(this).attr('id');
	$("#" + local).remove();
});
Como a pagina é recarregada na div, toda vez que o botão cadastrar é clicado, meus inputs sempre retornam, para cadastrar nova Pessoa ou Duplicata.
A Duvida:
Existe alguma forma melhor ou mais correta de se resolver este problema, sem ter que mudar as ids ou utilizar a solução acima.
Agradecimentos:
Aos que tiveram a coragem de ler até aqui um muito obrigado e espero que possam me ajudar.
Qualquer duvida favor responder a este tópico ou enviar mp.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro, não seria melhor fazer assim:

//Limpeza de Campos
$("#form-duplicata input").remove();

Porque, isso é basicamente o mesmo que você está fazendo...

Quando ao problema de ID duplicado... é realmente necessário essas ids? Vocês as esta usando em alguma parte do código? Porque, pra form, apenas o name é necessário. Sendo assim, ao duplicar, basta remover o atributo ID pra evitar problemas.


De qualquer forma, é muito difícil ajudar sem verificar o código.

 

 

Não irei postar códigos ou link para acesso do mesmo ainda, já que o problema é relacionado a âmbito geral do Javascript, HTML, Servidor e não de meu código creio eu.

Desculpa, mas se não está funcionando como o esperado, é problema no seu código sim. Seja de lógica ou de implementação. O fato de você utilizar aquele código pra fazer limpeza ao invés da forma simplificada já da a impressão que você não está sabendo organizar bem seu código/lógica.

Ficaria feliz em ajudar, mas, com essas informações limitadas, é bem complicado.

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

primeiro, não seria melhor fazer assim:

//Limpeza de Campos

$("#form-duplicata input").remove();

 

Porque, isso é basicamente o mesmo que você está fazendo...

 

Nem sabia que era possível desta forma, Obrigado pela informação.

 

 

 

Quando ao problema de ID duplicado... é realmente necessário essas ids? Vocês as esta usando em alguma parte do código? Porque, pra form, apenas o name é necessário. Sendo assim, ao duplicar, basta remover o atributo ID pra evitar problemas.

 

Eu as utilizo apenas para recuperar os valores dos inputs através do JQuery e realizar algo com esta informação, normalmente um método load do JQuery para cadastrar essas informações no Banco de Dados.

Eu poderia retirar os ids e mudar tudo para name e buscar os names nos formulários para recuperar estas informações, mais será que isto resolveria o problema informado? (não se alterando os names de inputs com a mesma função, tipo endereco).

 

 

 

De qualquer forma, é muito difícil ajudar sem verificar o código.

 

É muito código, e muitas paginas e esta tudo muito cru ainda, mais se quiser alguma parte especifica me informe que eu respondo com o código aqui fórum.

 

 

 

Desculpa, mas se não está funcionando como o esperado, é problema no seu código sim. Seja de lógica ou de implementação. O fato de você utilizar aquele código pra fazer limpeza ao invés da forma simplificada já da a impressão que você não está sabendo organizar bem seu código/lógica.

 

É pode ser, no entanto quando eu disse, eu estava informado que tudo funcionava perfeitamente, o problema ocorria no caso de ids iguais em paginas diferentes (formulários diferentes) mais no qual a pagina não se atualizava, somente através do método load do JQuery.

Quando eu pesquisei sobre o .remove no JQuery eu encontrei o seguinte. "Use .remove() when you want to remove the element itself, as well as everything inside it. In addition to the elements themselves, all bound events and jQuery data associated with the elements are removed."

Note a parte em negrito, isto me leva a crer que o problema ocorre por conta de algum evento ou data associado ao elemento (id no caso) e removendo o mesmo eu resolvo o problema, so queria saber se tem algum modo de chegar no mesmo fim que eu cheguei com o .remove so que de outra maneira, melhor e mais indicada para o caso. Ou somente mudando a logica que estou usando nos formularios e inputs que a coisa poderia funcionar sem o .remove.

 

 

 

Ficaria feliz em ajudar, mas, com essas informações limitadas, é bem complicado.

 

Abs

 

Você já ajudou no que pode, Obrigado.

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.