Ir para conteúdo

POWERED BY:

ment0r

window.location.href não funciona

Recommended Posts

Boa a noite a todos.

Estou desenvolvendo um sistema que utiliza uma função JavaScript pra auxiliar na exclusão dos registros. É bem simples:

 

<a href='' onclick="confExclusao('aluno.php', <?= trim($row->ID) ?>)">

O link manda como parâmetro a página e o id. Agora a função confExclusao:
 

function confExclusao(url, idLocacao) {

	var resposta = confirm("Deseja excluir esse registro?");

	if (resposta == true) {
		window.location.href = url+"?id="+id;
	}
} 

A função recebe a página e o id como parâmetro e então utiliza window.location.href para enviar isso pra mesma página e na página em questão há um trecho que deleta o registro:

if (isset($_GET['id'])) {

	$aluno = new Escola();

	if ($aluno->desativa($_GET['id'])) {
		echo $mensagem->erroMsg("Aluno deletado com sucesso", "aluno.php");
	}	
}

O problema é que window.location.href não funciona (já tentei as variações do window.location). Alguém tem ideia do que possa ser? O mais engraçado é que funcionava...
Fico aguardando qualquer ajuda - só falta isso pra eu entregar o sistema.

Um grande abraço a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema em ajudar você, é saber em qual questão de "não funciona" você quer dizer.

Como assim não funciona?

 

Enfim, algumas ponderações para se levar em conta:

  • A tag <a> já é um vetor de redirecionamento, use uma tag <button> porque nesse contexto aí quando clicado na tag <a> a confirmação é exibida porém o redirecionamento fica no aguardo, assim que essa confirmação deixar de existir o redirecionamento vem para o mesmo arquivo e a função não se completa. (você pode está removendo o atributo href para evitar isso)
  • Na função confExclusao no segundo parâmetro idLocacao você envia os dados porém ao concatenar você usa algo que não existe dentro da função.

Erro encontrado:

3 horas atrás, ment0r disse:

window.location.href = url+"?id="+id;

Correção:

Citar

window.location.href = url+"?id="+idLocacao;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de mais nada, muito obrigado Omar, pela resposta.
O "não funciona" significava literalmente não funcionar, nesse caso. Eu clicava no botão excluir e nada acontecia, usava o alert em todas as variáveis e constava o esperado, o que me levou a perceber que o erro estava no window.location.href.
Eu cometi o pecado de não colocar a variável que vem como parâmetro e sim o id, como você bem observou.

No mesmo dia eu acabei percebendo o erro grotesco, corrigi; mas acabei não atualizando aqui e quando vim, você já havia respondido.

De qualquer modo, muito obrigado por dispor de seu tempo e me ajudar. Um grande abraço e muito sucesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas solucionou?

 

E erro de parâmetro eu cometo também "e muito", acontece geralmente porque sempre porque defino nomes bem mais detalhados na produção, enquanto que na versão final no nome é bem mais genérico para reduzir os KB's do arquivo assim ela carrega mais rápido. No entanto  ao depurar esse tipo de erro é logo escancarado no console do browser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolveu sim Omar.

Entretanto, voltou a acontecer numa outra página e então fiz a troca do a por button, conforme você havia sugerido. Resolvido.

Muito obrigado pela ajuda amigo.

Grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por FabianoSouza
      Tenho os arquivos de Javascript (.js) A e B.
       
      O arquivo A é aonde guardo as functions de uso amplo.
      O arquivo B é aonde guardo as functions específicas para uma área (páginas) do sistema.
       
      Eu tenho uma função genérica chamada criaGrid que monta um gridview (serve a todos os registros do sistema). Mas preciso que ela consiga invocar uma function existente no arquivo B.
      Vejam.
      //a var execFn5 é definida com o NOME de uma function //isso funciona se a function a ser executada estiver no arquivo A. //se eu coloca-la em outra arquivo, não funciona. //isso é um trecho da function principal que cria o GRID, que fica no Arquivo A. var execFn5 = window[alvoClick.getAttribute('data-fn')]; if (typeof execFn5 === 'function') { alert('Teste') }; Acho que é um questão de escopo do objeto Window.
      Eu precisaria fazer o objeto Window executar a function que está em outro arquivo (mas que está devidamente linkado à pagina renderizada pelo browser)  
       
    • Por FabianoSouza
      Meu código funciona.
      O que preciso é fazer uma function, que é invocada pelo método Window, ser executada utilizando argumentos da function "pai".
       
      Vejam trecho do meu código.
      O argumento objDados é um JSON. Nesse JSON há o nome de uma function (na chave objDados.fnTrataResp) que é instanciada no trecho execFn(event).
      O que preciso é que ao ser instanciada consiga manipular valores do objeto server.
      É possível? Ao que parece, teria que fazer um lance de injetar o objeto server na function....ou algo nessa linha de raciocínio.
       
      server.ajax(objDados, function(){ var execFn = window[objDados.fnTrataResp]; if (typeof execFn === 'function') { execFn(event) }; })  
    • Por Ragnar
      Olá! Eu estou com um sério problema de não conseguir abrir portas no meu roteador(TP-LINK WR740N).Já abri portas no firewall do windows(TCP/UDP), já desliguei o firewall do roteador, já coloquei o IP do meu computador na área DMZ do roteador e mesmo assim quando testo ela ta fechada.OBS.:Não uso modem e uso notebook.
    • Por Eric_Pego
      Boa Tarde,
      Alguém já se deparou com este erro: Erro raised exception class EInvalidOperation with message 'Cannot focus a disabled or invisible windon, já olhei todos os componentes que estão no form para ver se tem algum desabilitado ou invisible e estão todos ok! ai coloquei alguns breakpoint e o erro aparece nas seguintes linhas de código mais exato na parte destacada em negrito.
      Esse código é de um form onde faço alguns lançamentos e chamo outro form para finalizar os lançamentos, como se fosse uma venda, na verdade é uma venda só que de serviços, eu lanço os serviços efetuados e finalizo clicando em um botão e chama essa tela para que eu possa lançar algum desconto, ai clico no botão finalizar para mandar os lançamentos para o banco e o erro de focus acontece.
      Se alguém puder dar uma força! sou novo programando em delphi!
       
      procedure TF_Fecharmedicao.Fecharmedicao;
      begin
      with dm do
        begin

          cds_cadmedir.Open;
          cds_cadmedir.Append;
          cds_cadmedirID_OBRA.Value:= DMPesq.cdspesq_obrasID_OBRA.Value;
                 F_Medicao.cdsitens_servicos.First;
                while not F_Medicao.cdsitens_servicos.eof do
                begin
                  DM.cds_caditem_medir.Open;
                  DM.cds_caditem_medir.Append;
                  DM.cds_caditem_medirID_SERVICOS.Value:= F_Medicao.cdsitens_servicosID_SERVICOS.Value;
                  DM.cds_caditem_medirQUANTIDADE.AsFloat:= F_Medicao.cdsitens_servicosquantidade.AsFloat;
                  DM.cds_caditem_medirVALOR_UNIT.AsFloat:= F_Medicao.cdsitens_servicospreco.AsFloat;
                  DM.cds_caditem_medirVALOR_TOTAL.AsFloat:= F_Medicao.cdsitens_servicosValortotal.AsFloat;
                  F_Medicao.ID_SERVICOS.SetFocus;
                  F_Medicao.cdsitens_servicos.Next;
                  DM.cds_caditem_medir.Post;

                end;
                    DM.cds_caditem_medir.ApplyUpdates(0);
                    F_Medicao.cdsitens_servicos.EmptyDataSet;
      end;
      end;
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.