Ir para conteúdo
Fórum Script Brasil
  • 0

Regexp


edmais

Pergunta

Fala Brothers!!

Eu tenho essa rotina aqui..

function FiltrarHistBan()
{
   var url = location.href;
   var regex = /&*destino=(C|D)*/;

   if (url.indexOf("?") == -1) {
      url = url.replace(regex, "");
      url += "?destino=" + document.getElementById("destino").value;
   }
   else
   {
      url = url.replace(regex, "");
      url += "destino=" + document.getElementById("destino").value;
   }
   
   location.href = url;

   }

Até aí está correto.

Essa rotina faz o seguinte..

Eu tenho um 'select' que ao ser mudado (onchange) ele vai nessa rotina ae..

então, ele pega a url.. suponhamos que seja: www.scriptbrasil.com.br/pagina.asp ai ele testa se tem no fim da pagina.asp o caracter --> ? senao ele joga ?destino = valor. Entendeu? caso já tenha esse --> ? <-- ele só joga a variavel na url e seu valor. Até ai perfeito. Acontece que, se tivermos a url www.scriptbrasil.com.br/pagina.asp?variavel=1&variavel2=foo ele adiciona a variavel destino da seguinte forma www.scriptbrasil.com.br/pagina.asp?variavel=1&variavel2=foodestino=C e fica faltando o caracter --> &

Bom então a solução seria adicionar a esta frase:

url += "&destino=" + document.getElementById("destino").value;

como vimos, adicionei o caracter & na frase acima, no caso de a url ser www.scriptbrasil.com.br/pagina.asp?variavel=1&variavel2=foo com a frase acima ele adicionaria corretamente, ficando.. www.scriptbrasil.com.br/pagina.asp?variavel=1&variavel2=foo&destino=C

Acontece que se a pagina for apenas www.scriptbrasil.com.br/pagina.asp?destino=C ele vai pegar e vai trocar essa variavel destino por &destino=D o que ficara da seguinte forma.. www.scriptbrasil.com.br/pagina.asp?&destino=D

E vai dar erro. alguém teria alguma sugestão para me dar?

Eu já andei pedindo algumas ajudas por ae, mas ngm soube nada muito prártico, quem tiver alguma idéia, manda ae smile.gif

Um Abraço

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Ok, mas você há de concordar comigo que a url jamais terminará com --> ?.

Pelo seguinte, podemos ter:

. www.com.br/pagina.asp?variavel=10

se a url for esta a função troca apenas (variavel = 10) por &variavel=10

. www.com.br/pagina.asp

se for assim, a função apenas adiciona --> www.com.br/pagina.asp?variavel=10

. www.com.br/pagina.asp?x=12&variavel=10

deste jeito ele substitui corretamente o &variavel=10 por www.com.br/pagina.asp?x=12&variavel=VALOR

ou seja, o problema é quando a URL é: www.com.br/pagina.asp?variavel=10

pois ele pega a url toda e troca a 'variavel' por '&variavel' e aí me gera erro..

entendeu agora?

valeu cara =)

Link para o comentário
Compartilhar em outros sites

  • 0

tu tah mandando isso com um formulário??? se você colocasse uns campos hidden ao invés de mandar pela querystring ficaria mais fácil, pois você não precisaria controlar isso... outra coisa, se existir ? em qualquer parte da url você pode utilizar o &...

Link para o comentário
Compartilhar em outros sites

  • 0

n cara... pode deixar assim que n vai dar erro não...

eu n cheguei a trabalhar muito com asp... já fui bem adiantado com o c#, e n tem erros... akabei de testar aki... em c# isto que você quer e não deu erro, testei em php também n deu erro algum... e ter um ?&qs=ScriptBrasil não tem probs não...

você pode testar com o proprio link daki deste post também...

clica aea abaixo:

http://scriptbrasil.com.br/forum/index.php?&showtopic=56220

e perceba que eu coloquei propositalmente o tal &...

abraço

wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

putz cara... posta seu code ae... mas o codigo inteiro, pra eu analizar...

prq olha só... to fazendo um exemplozinho simplezasso em C#, e como afirmei antes, não da erros:

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<html>
	<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>Untitled Document</title>
	</head>
	<body>
  <%
  	string escreve1, escreve2, txt1;

  	escreve1 = Request.QueryString["escreve1"];
  	escreve2 = Request.QueryString["escreve2"];
  	txt1 = "Querystring Vazia Animal!!!";

  	if (escreve1 == null && escreve2 == null)
  	{
    Response.Redirect("teste2.aspx?&&&&&&&&&&&escreve1=Escreva+Alguma+Coisa&"
    + "&&&&&&&&&&escreve2=na+QueryString+escreve1+e+escreve2!");
  	}
  	else if (escreve1 != null || escreve2 != null)
  	{
    Response.Write(escreve1 + "<br />");
    Response.Write(escreve2);
  	}
  %>
	</body>
</html>

se tu tiver .NET Framework na tua maquina, testa só pra voce ver...

só salvar como .aspx

ps.: observe a quantidade de &'s que coloquei propositalmente!

falou

wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

ahhhhhhhhhhhhhhhhhhh saquei saquei...

perae que vou pensar em algo aki pra você...

to meio enrolado agora....

mas se eu não responder antes... pelo menos posta o seu code COMPLETO pra nós analizar-mos

EDITED...

por cara... se for o que eu intendi... p****, foi moleza... era só add um & como te falei antes... antes do destino no else

ve se te ajuda:

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<!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=iso-8859-1">
  <title>Untitled Document</title>
  <script language="javascript">
  	function abre()
  	{
    var url = window.location.href;
    var regex = /&*destino=(C|D)*/;
    if(url.indexOf("?") == -1)
    {
    	url = url.replace(regex, "");
    	url += "?destino=" + document.getElementById("destino").value;
    }
    else
    {
    	url = url.replace(regex, "");
    	url += "&destino=" + document.getElementById("destino").value;
    }
    
    alert (url);
    //window.open(url,300,300,'janela');
  	}
  </script>
	</head>
	<body>
  <input type="text" value="" id="destino" name="destino" size="10" /><br />
  <a href="javascript:abre();">Click Aqui</a>
	</body>
</html>

senao ajudar, posta aew!

falou

wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0
Guest JSSPeacher

Oba pessoal do ScriptBrasil tudo bom?

Eu sou meio novo em js, e vi esse post aqui...

não intendi... o que siginifica esse /&*destino=(C|D)*/ no codigo que vocês estão listando acima?

Muito Grato!

João Gabriel

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...