Ir para conteúdo
Sara Alves

Resgatar valor query pelo load do jquery

Recommended Posts

Olá amigos,

 

Estou tentando chamar uma pagina através do load, essa pagina terá uma querystring que eu quero pega-la na pagina de chamada, porém o valor vem como null quando eu tento através do load, fora dele chamando a pagina sozinha, está tudo ok.

 

São 2 páginas, 1 principal e a 2 que trara um alert de acordo com o valor passado pela query

Página Principal (index.html)

<div id="content">resultado</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
function carrega(v) {
	$("#content").load("/query/video.html?v="+ encodeURIComponent(v), function(response, status, xhr) {
		if (status == "error") {
			//alert("ocorreu um erro")
		} else {
			//alert("ok")
		}
	});
}

carrega("social");
</script>

Segunda página (video.html)

<script>
function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

var foo = getParameterByName('v');
alert(foo);
</script>

Se você fizer o teste chamado já a segunda pagina com a query assim /video.html?v=teste123 um alert de "teste123" vai aparecer, porém quando tento fazer isso pela página principal passando o parametro da query e trazendo o resultado por load, simplesmente da erro e o valor vem como null.

Alguém poderia me explicar aonde estou errando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já passei pelo mesmo problema, e resolve de um forma... diferente...

 

quando você usa o window.location.href ... você está dizendo literalmente que quer a url da janela do browser.... o que não é verdade no seu caso.

 

o que você pode fazer...

 

antes do load...

 

crie uma variável compartilhada no window...

 

<div id="content">resultado</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
function carrega(v) {
  
  window.sharedV = encodeURIComponent(v);
	$("#content").load("/query/video.html?v="+ encodeURIComponent(v), function(response, status, xhr) {
		if (status == "error") {
			//alert("ocorreu um erro")
		} else {
			//alert("ok")
		}
	});
}

carrega("social");
</script>

 

E na outra página ... 

 

<script>
function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

var foo = window.sharedV||getParameterByName('v');
alert(foo);
</script>

 

 

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma segunda forma de fazer:

 

<div id="content">resultado</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
function carrega(v) {
	$("#content").load("/query/video.html?v="+ encodeURIComponent(v), function(response, status, xhr) {
		if (status == "error") {
			//alert("ocorreu um erro")
		} else {
			//alert("ok")
		}
	}).data("v",encodeURIComponent(v));
}

carrega("social");
</script>

E na outra pagina:

 

<script>
function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

var scriptTag = document.scripts[document.scripts.length - 1];
var parentTag = scriptTag.parentNode;

var foo = $(parentTag).data("v")||getParameterByName('v');
alert(foo);
</script>

 

  • Obrigado! 1

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 jaquelss
      Estava fazendo download de coisas que uso no trabalho, mas parece que esqueci de algo. Sempre dá esse erro, mas tecnicamente parece que tá tudo ok?
      Eu esqueci algum programa ou algo do código em si?
      Agradeço desde já.
    • Por VCastilho
      Boa Tarde
      Estou tentando desenvolver um Filtro Inteligente, no qual funcionaria da seguinte forma:

      Filtro 1         Filtro 2          Filtro 3          Filtro 4 
      Opção 1
      Opção 2
      Opção 3


      Ao selecionar a Opção 1 do Filtro 1 liberaria as opções do filtro 2

      Filtro 1         Filtro 2              Filtro 3          Filtro 4 
      Opção 1      Opção 1 - a     
                           Opção 1 -b
                           Opção 1 -c

      Assim escolhendo a opção do filtro 2 liberaria as opções do Filtro 3 e assim por diante
      Ao escolher a Opção 2 do Filtro 1 liberaria outras opções

      No caso preciso aplicar na plataforma da Tray, que é o de menos porém não consigo chegar ao código certo
      Estou tentando utilizar o HTML e o JQuery em conjunto para isso, conseguem me ajudar? Realmente estou perdido na situação

      Atenciosamente Vinicius Castilho
    • Por lucianfpaula
      Olá gostaria de saber se alguém poderia me dar a direção para o seguinte:
      Quero desenvolver um serviço do tipo wix, onde a pessoa pode criar o site dela baseado em um template que irá ter no sistema. muito grato
    • Por Bobrinha
      Olá a todos.
       
      Tenho uma dúvida e não sei se é possível caso tenha alguma sugestão por favor avise.
       
      Adicionar resultado de um innerhtml dentro de um link atributo href é possível? ou seja eu tenho um input onde seleciono um ano 
       
      <select id="ano"> <option selected>2019</option> <option value="2018">2018</option> <option value="2017">2017</option> </select> <div id="anoAtual"></div> No query pego o valor ou seja o ano selecionado e jogo no html
       
      $("select").change(function () { document.getElementById("ano").innerHTML = document.getElementById("anoAtual").value; });  
      Agora vem a dúvida como eu jogo na URL? existe uma outra forma? é possível?
       
      <a href='resultado.php&ano=COMO JOGAR O ANO AQUI?'>  
       
    • Por jlrs19833
      Bom dia, pessoal! Estou precisando de uma luz para saber como tratar determinado problema:
       
      Cenário: Ambiente em desenvolvimento de plataforma para gestão de uma empresa.
      Linguagem principal: PHP (framework CodeIgniter)
      Dificuldade: retornar dados de select dinâmico junto ao evento de post do formulário.
       
      Descrição: Conforme mencionado acima, estou desenvolvendo um pequeno sistema para uma empresa que conterá poucas telas, sou desenvolver entusiasta, então não tenho muito conhecimento e prática com este assunto. Em determinada tela, o cliente quer que haja um formulário de cadastro onde dentre os diversos campos deste form, haverá dois do tipo select, onde um é o select de cidade e o outro do tipo estado. O select de Estado é preenchido automaticamente quando do carregamento da view, através de uma chamada do controller/model junto ao BD e o select cidade é preenchido de maneira automática, com javascript, através de uma mesma consulta, passando o ID do campo estado. Minha dificuldade está quando faço o submit deste form, pois o campo value do option deste select (cidade) não é enviado junto, pois no código fonte ele não foi carregado. Como posso fazer para recuperar esse value e enviar junto com o evento de submit?
       
      Segue como meus arquivos estão sendo feitos. Como pode observar estou, tentando apenas printar os campos para que eu possa ter certeza que eles estão sendo carregados.
      https://gist.github.com/jlrs19833/808887a5221ff31ca6ea22bf0c8b85a5
       
      Peço desculpas se estou postando no local errado e que os moderadores me orientem neste caso.
       
      Desde já agradeço o auxílio de cada um.
×

Informação importante

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