Ir para conteúdo

POWERED BY:

Arquivado

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

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

  • 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.