Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Código jQuery que captura largura não trabalha com $_POST

12-09-2017 20:43

Olá!

Estou tentando usar o código jQuery abaixo, que captura a largura da janela do navegador, num arquivo que recebe valores através de $_POST, mas esses valores se perdem. Isoladamente, e com valores recebidos por $_GET, tais valores se mantêm.

Eis o código isolado:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { // função que envia a largura para o arquivo retornando o conteúdo function Largura() { var width = $(window).width(); if(document.location.hash=="") { location.href="teste.php?width="+width+"#"; } } // chamando a função no resize $(window).on("resize", function() { Largura(); }); /// chamando a função no carregamento Largura(); }); </script>

Estou tentando armazenar o conteúdo de $_POST em $_SESSION, mas, mesmo assim, ele se perde:

session_start(); $_SESSION['valor'] = $_POST['valor']; echo $_SESSION['valor']; echo "&nbsp;-&nbsp;"; echo "variável SESSION valor"; echo "<br />";

O que eu posso fazer para que o conteúdo de $_POST se mantenha? Preciso dele para usar numa consulta SQL.

Grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Código jQuery que captura largura não trabalha com $_POST

13-09-2017 08:05

Esse script que você postou está usando o GET para enviar width, qual método você está usando para enviar via POST?

Veja uma opção para função Largura.

function Largura() { var width = $(window).width(); if(document.location.hash=="") { $("#valor").val(width); $("form").submit(); } }

Nesse caso jogo o valor da largura para um input text do formulário, depois envio o formulário com os dados via POST.

O formulário é o seguinte:

<form name="form" action="teste2.php" method="post"> <input type="text" name="valor" id="valor" value=""> </form>

Em teste2.php capturo os dados recebido.

<?php echo $_POST['valor']; ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

14-09-2017 18:27

Grato.

Estou fazendo assim: no arquivo teste.php, tenho um formulário com action para ele próprio. Quando submeto esse formulário, são feitas algumas validações, é capturado um valor no banco de dados, que é enviado para teste2.php com um formulário com método post que tem um submit automático através de JavaScript, conforme abaixo:

<form method="post" name="form_html_js" action="teste2.php"> <input type="hidden" name="valor" value="<?php echo $captura_banco_dados['valor']; ?>" /> <script type="text/javascript"> document.form_html_js.submit(); </script> </form> <?php exit(); ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Código jQuery que captura largura não trabalha com $_POST

14-09-2017 20:09

Testou com o exemplo que eu postei? Eu coloquei a linha para enviar o valor do width para o input.

$("#valor").val(width);

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

16-09-2017 09:50

Eu vi a linha no código. Ainda não testei. Vou testar e postarei.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

16-09-2017 10:28

Ficou uma espécie de loop contínuo, submetendo o formulário sem parar, creio que por conta do submit automático em JavaScript no formulário.

Apenas para esclarecer, a finalidade da captura da largura é, se valor da captura inferior a determinada largura, exibir a mensagem "GIRE SEU DISPOSITIVO".

Se eu tirar o submit automático, o código da captura da largura, conforme você colocou, não funcionará, creio, pois não há botão de submissão do formulário.

Você tem ideia de como cessar essa submissão sem parar do formulário?

Grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Código jQuery que captura largura não trabalha com $_POST

16-09-2017 19:41

Não sei se esse método é correto. Mas você pode fazer assim:

<script src="jquery.js"></script> <script> $(function() { var width = $(window).width(); if(document.location.hash=="") { location.href="teste2.php?width="+width+"#"; } }); </script>

Em teste2.php você converte o valor do GET em POST.

$_POST['width'] = $_GET['width']; echo $_POST['width'];

Você também pode usar o $.post https://api.jquery.com/jquery.post/
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

17-09-2017 07:23

Eu gostaria de trabalhar com POST, pois envio, através desse método, vários valores para o arquivo onde é capturada a largura, e não gostaria de exibir esses valores na barra de endereços do navegador, o que ocorrerá se eu usar GET, e, depois, fizer a conversão para POST.

Eu acessei o link do $.post que você passou, achei interessante, mas como eu posso implementar isso juntamente com o código da captura da largura?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

17-09-2017 07:40

Desculpe. Não quero flodar, mas depois de haver postado continuei pesquisando, e o que encontrei pode ser mais simples.

Seu exemplo está funcionando, ao menos quanto ao valor capturado da largura e enviado por POST, e aos valores recebidos por POST de outra página e reenviados.

Você pode me ajudar a configurar a submissão do formulário a um evento onresize (https://www.w3schools.com/jsref/event_onresize.asp)? Creio que isso faria cessar a espécie de loop contínuo (ou infinito), a que me referi, pois acompanharia o evento onresize da captura da largura.

Grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Código jQuery que captura largura não trabalha com $_POST

17-09-2017 10:55

É bem simples. Veja esse exemplo

<script> function Alerta() { alert('alerta'); } window.addEventListener("resize", Alerta); </script>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

17-09-2017 11:44

Obrigado.

Vou testar.

Tenho uma dúvida acerca desta linha do código da minha postagem de n.° 7 (não sei se posso ficar repetindo códigos inteiros - posso?):

if(document.location.hash=="") {

Essa linha, me parece, verifica se há algum valor correspondente à largura na barra de endereços, para, não havendo, carregar a página e capturar a largura. É isso? Se for, isso consta do código de resize que você me ajudou a construir, o qual trabalha com GET. Você adaptou o código para POST. Trabalhando com post, nunca haverá valor de largura na barra de endereços. Isso poderia ser a causa da submissão contínua do formulário?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Código jQuery que captura largura não trabalha com $_POST

17-09-2017 12:08

Isso mesmo. Essa linha funciona a partir da ideia de que quando entrar na página pela primeira vez não haverá nenhum hash # no endereço da página.
Após o primeiro acesso a página quando ainda não há o hash é que a função é executada.

Quanto ao uso. Você tem que armazenar o valor enviado pela primeira vez em algum lugar, seja num cookie, session ou input. Para trabalhar em outras página.
Em caso de novo resize de página apaga o anterior e trabalha com o novo.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

17-09-2017 12:45

Eu montei um código fora de meu código de desenvolvimento para você poder ver o que está acontecendo, se você puder testá-lo.

O valor enviado de teste.php para teste2.php, assim como a largura capturada em teste2.php, estão se mantendo em teste2.php. No modo responsivo, se largura inferior a 380 px, é exibida a mensagem "GIRE SEU DISPOSITIVO".

Mas, como eu disse, o formulário é submetido continuamente, sem parar. Eu gostaria que fosse submetido somente no evento resize.

Eis os arquivos:

Arquivo teste.php:

<html> <head> <title>Formulário</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="viewport" content="width=device-width, initial-scale=1" /> </head> <body> <form action="teste2.php" method="post" name="formulario" id="formulario"> <p align="center">Texto: <input name="texto" type="text" id="texto"> </p> <div align="center"> <button type="submit" id="Enviar" name="Enviar" value="Enviar">Enviar</button> </div> </form> </body> </html>

Arquivo teste2.php:

<?php if(!isset($_POST['texto'])){$_POST['texto'] = "";}if(isset($_POST['texto'])){$_POST['texto']=$_POST['texto'];} if(!isset($_POST['valor'])){$_POST['valor'] = "";}if(isset($_POST['valor'])){$_POST['valor']=$_POST['valor'];} $texto = $_POST["texto"]; //echo $texto; echo "<br />"; $largura = $_POST["valor"]; //echo $largura; echo "<br />"; ?> <html> <head> <title>Formulário</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="viewport" content="width=device-width, initial-scale=1" /> </head> <body> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { // função que envia a largura para o arquivo retornando o conteúdo function Largura() { var width = $(window).width(); if(document.location.hash=="") { $("#valor").val(width); $("form").submit(); } } // chamando a função no resize $(window).on("resize", function() { Largura(); }); /// chamando a função no carregamento Largura(); }); </script> <form action="#" method="post" name="form" id="form"> <input type="hidden" name="valor" id="valor" value="" /> <input type="hidden" name="texto" value="<?php echo $_POST['texto']; ?>" /> </form> <center><?php echo $texto; ?></center> <br /><br /> <center><?php echo $largura; ?></center> <br /><br /> <?php if($_POST['valor'] < 380){ echo "<center>GIRE SEU DISPOSITIVO</center>"; } ?> </body> </html>

Uma dúvida: na linha $("form").submit(); do código jQuery que você adaptou, form tem a ver com name ou id do formulário? É isso que faz submeter o formulário?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Código jQuery que captura largura não trabalha com $_POST

17-09-2017 15:06

O form é relativo a tag form.

Esse envio em loop só acontece se você enviar os dados para a mesma página.

Veja esse exemplo. No resize ele captura a largura, envia para o formulário e logo em seguida faz o POST.

<script src="jquery.js"></script> <script> $(function() { // FUNÇÃO PARA ENVIO function EnviaLargura() { var width = $(window).width(); // VERIFICAÇÃO DO HASH if(document.location.hash=="") { $("#valor").val(width); $("#form").submit(); } } // FIM DA FUNÇÃO // CHAMADA DA FUNÇÃO NO RESIZE window.addEventListener("resize", EnviaLargura); }); </script> <form id="form" action="teste2.php" method="post"> <input type="text" name="valor" id="valor" value=""> </form>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

17-09-2017 18:05

Obrigado.

Adaptei seu código ao meu, e passou a ter o seguinte comportamento: não havia o carregamento inicial da largura. Minimizando o navegador, ou diminuindo sua largura arrastando a lateral, nas duas situações sem usar o modo responsivo, a largura passou a ser capturada. Porém, ao usar o modo responsivo do Firefox, ao alternar entre retrato e paisagem, as medidas passaram a ser exibidas invertidas (quando na posição retrato era exibida a largura da posição paisagem e vice-versa), e, ainda, as medidas não eram exibidas conforme mostradas pelo navegador.

Inseri a linha para chamar a função no carregamento (EnviaLargura();), e passou a ocorrer o envio em loop (como você o referiu), como no arquivo teste2.php de minha mensagem de n.° 13.

Então, eu excluí a chamada no carregamento do arquivo teste2.php de minha postagem de n.° 13, e o código passou a se comportar de maneira idêntica ao do código com a alteração que você fez na sua mensagem anterior, sem a chamada da função no carregamento.

Quando há a chamada da função no carregamento, há o envio em loop, mas há a alternância das capturas das larguras variando entre retrato e paisagem, e as medidas são capturadas e exibidas corretamente, quando no modo responsivo.

Abaixo, está o código com a alteração que você postou em sua mensagem anterior a esta, e com a chamada no carregamento.

O arquivo teste.php continua sendo o mesmo de minha mensagem de n.° 13.

Arquivo teste2.php:

<?php if(!isset($_POST["texto"])){$_POST["texto"] = "";}if(isset($_POST["texto"])){$_POST["texto"]=$_POST["texto"];} if(!isset($_POST["valor"])){$_POST["valor"] = "";}if(isset($_POST["valor"])){$_POST["valor"]=$_POST["valor"];} $texto = $_POST["texto"]; //echo $texto; echo "<br />"; $largura = $_POST["valor"]; //echo $largura; echo "<br />"; ?> <html> <head> <title>Formulário</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="viewport" content="width=device-width, initial-scale=1" /> </head> <body> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script type="text/javascript"> $(function() { // FUNÇÃO PARA ENVIO function EnviaLargura() { var width = $(window).width(); // VERIFICAÇÃO DO HASH if(document.location.hash=="") { $("#valor").val(width); $("#form").submit(); } } // FIM DA FUNÇÃO // CHAMADA DA FUNÇÃO NO RESIZE window.addEventListener("resize", EnviaLargura); /// chamando a função no carregamento EnviaLargura(); }); </script> <form action="#" method="post" name="form" id="form"> <input type="hidden" name="valor" id="valor" value="" /> <input type="hidden" name="texto" value="<?php echo $_POST["texto"]; ?>" /> </form> <center><?php echo $texto; ?></center> <br /><br /> <center><?php echo $largura; ?></center> <br /><br /> <?php if($_POST["valor"] < 380){ echo "<center>GIRE SEU DISPOSITIVO</center>"; } ?> </body> </html>

O que pode estar dando errado?

Grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Código jQuery que captura largura não trabalha com $_POST

18-09-2017 18:42

Fiz alguns testes e descobri que usando o document.location.hash sempre estava vindo vazio mesmo usando o hash ali no post action="#"
Talvez essa função só receba o valor se enviada pelo link GET. E também esse é o motivo do loop. Porque o script nunca recebia o #

Então fiz o seguinte, usei o indexOf para verificar se havia o hash no link, após o formulário ser enviado. Parece que deu certo.

Também fiz uma separação. Fiz uma função para ser carregada pelo formulário e outra para o resize. Testei no modo responsivo do Chrome e parece que deu certo. Testa ai.

<?php if(!isset($_POST["texto"])){$_POST["texto"] = "";}if(isset($_POST["texto"])){$_POST["texto"]=$_POST["texto"];} if(!isset($_POST["valor"])){$_POST["valor"] = "";}if(isset($_POST["valor"])){$_POST["valor"]=$_POST["valor"];} $texto = $_POST["texto"]; //echo $texto; echo "<br />"; $largura = $_POST["valor"]; //echo $largura; echo "<br />"; ?> <html> <head> <title>Formulário</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="viewport" content="width=device-width, initial-scale=1" /> </head> <body> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script type="text/javascript"> $(function() { // FUNÇÃO PARA ENVIO function EnviaLargura() { var width = $(window).width(); // VERIFICAÇÃO DO HASH endereco = window.location.href; if(endereco.indexOf("#")==-1) { $("#valor").val(width); $("#form").submit(); } } // FIM DA FUNÇÃO function EnviaLargura2() { var width = $(window).width(); // VERIFICAÇÃO DO HASH //endereco = window.location.href; //if(endereco.indexOf("#")==-1) { $("#valor").val(width); $("#form").submit(); //} } // FIM DA FUNÇÃO // CHAMADA DA FUNÇÃO NO RESIZE window.addEventListener("resize", EnviaLargura2); /// chamando a função no carregamento EnviaLargura(); }); </script> <form action="teste.php#" method="post" name="form" id="form"> <input type="hidden" name="valor" id="valor" value="" /> <input type="hidden" name="texto" value="<?php echo $_POST["texto"]; ?>" /> </form> <center><?php echo $texto; ?></center> <br /><br /> <center><?php echo $largura; ?></center> <br /><br /> <?php if($_POST["valor"] < 380){ echo "<center>GIRE SEU DISPOSITIVO</center>"; } ?> </body> </html>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

18-09-2017 20:26

Obrigado. Suspeitei da causa do efeito loop. Vou testar e logo postarei.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

18-09-2017 21:46

Você colocou no action do form o arquivo teste.php, e estava retornando a ele quando se chegava a teste2.php. Mudei o arquivo do action para teste2.php e continuou nele. O hash no action, junto do nome do arquivo, deve ficar lá?

O código está funcionando, mas a captura da largura está imprecisa. Estou testando no modo responsivo do Firefox (pois estou usando o Firefox como navegador padrão nas áreas restritas do site), e, conforme você seleciona os tamanhos da janela que ele simula, são exibidas as medidas das mesmas, e está havendo diferença de alguns pixels na largura exibida pelo navegador, orientando sobre a largura da janela, e a largura capturada pelo script, diferença que varia às vezes para mais e às vezes para menos, cerca de um a três pixels.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

18-09-2017 21:56

Mesmo se enviando através de post tem-se de verificar o hash? Não há como, no lugar dessa verificação, verificar, no JavaScript, se $_POST["valor"] está vazia e enviar o formulário?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Código jQuery que captura largura não trabalha com $_POST

19-09-2017 11:14

Esse problema do valor diferente creio que é porque quando você faz o resize existe um tempo para alimentar o input e em seguida enviar o formulário.
Esse intervalo entre o envio do valor para o input e o submit faz com que alguns pixels se percam. Porque enquanto está fazendo o resize já está tentando enviar os dados por cima.

Montei um exemplo mais limpo. Funciona assim:

Quando entra na página alimenta o input com o width e espera 3 ( 3000 = 3 segundos ) segundos para enviar o formulário. Isso dá tempo do input estar alimentado. Se quiser pode fazer testes para reduzir o tempo.

Já no resize é o mesmo processo.

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script> $(function() { <?php if(!isset($_POST['valor'])) { ?> // CAPTURA A LARGUA var width = $(window).width(); // ENVIA O VALOR PARA O INPUT $('#valor').val(width); // APÓS O TEMPO ENVIA O FORMULÁRIO setTimeout(function(){ $("#submit").trigger("click") }, 3000); <?php } ?> // FUNÇÃO DA LARGURA NO RESIZE function Largura() { var width = $(window).width(); $('#valor').val(width); setTimeout(function(){ $("#submit").trigger("click") }, 3000); } window.addEventListener("resize", Largura); }); </script> <?php echo $_POST['valor']; ?> <form action="teste.php" method="post" name="form" id="form"> <input type="text" name="valor" id="valor" value="" /> <input type="submit" id="submit" style="display:none;"> </form>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

19-09-2017 22:38

Obrigado. Acessei pelo celular para ver se você havia postado. Amanhã testarei e postarei. Obrigado, novamente.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

20-09-2017 15:52

Eu diminuí o tempo de espera para 1 segundo (1000), e a captura da largura está correta, inclusive com a alternância no modo responsivo.

Porém, há um problema: vi que a largura não estava sendo capturada no carregamento, e inseri o código chamando a função no carregamento, e passou a haver o que creio ser uma sequência de submits autônomos (ou é aquele efeito loop - não sei bem o que é).

Vou postar o código teste2.php com as adaptações que fiz com base no que você postou na sua mensagem anterior.

O arquivo teste.php continua sendo o postado na minha mensagem de n.° 13.

Arquivo teste2.php:

<?php if(!isset($_POST["texto"])){$_POST["texto"] = "";}if(isset($_POST["texto"])){$_POST["texto"]=$_POST["texto"];} if(!isset($_POST["valor"])){$_POST["valor"] = "";}if(isset($_POST["valor"])){$_POST["valor"]=$_POST["valor"];} $texto = $_POST["texto"]; //echo $texto; echo "<br />"; $largura = $_POST["valor"]; //echo $largura; echo "<br />"; //http://127.0.0.1/testes_submit_form_onresize_cnw_3/teste.php ?> <html> <head> <title>Formulário</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="viewport" content="width=device-width, initial-scale=1" /> </head> <body> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script type="text/javascript"> $(function() { <?php if(!isset($_POST['valor'])) { ?> // CAPTURA A LARGUA var width = $(window).width(); // ENVIA O VALOR PARA O INPUT $('#valor').val(width); // APÓS O TEMPO ENVIA O FORMULÁRIO setTimeout(function(){ $("#submit").trigger("click") }, 1000); <?php } ?> // FUNÇÃO DA LARGURA NO RESIZE function Largura() { var width = $(window).width(); $('#valor').val(width); setTimeout(function(){ $("#submit").trigger("click") }, 1000); } window.addEventListener("resize", Largura); /// chamando a função no carregamento Largura(); }); </script> <form action="teste2.php" method="post" name="form" id="form"> <input type="hidden" name="valor" id="valor" value="" /> <input type="hidden" name="texto" value="<?php echo $_POST["texto"]; ?>" /> <input type="submit" id="submit" style="display:none;" /> </form> <center><?php echo $texto; ?></center> <br /><br /> <center><?php echo $largura; ?></center> <br /><br /> <?php if($_POST["valor"] < 380){ echo "<center>GIRE SEU DISPOSITIVO</center>"; } ?> </body> </html>

Como pode ser contornada essa situação?

O código chamando a função no carregamento está no lugar certo?

Grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Código jQuery que captura largura não trabalha com $_POST

21-09-2017 09:42

Vou me basear em 2 arquivos. teste.php com o código que captura e envia os dados, e teste2.php que só recebe os dados do formulário.

No primeiro acesso ao arquivo teste.php a largura é capturada e enviada para o input.

<?php if(!isset($_POST['valor'])) { ?> // CAPTURA A LARGUA var width = $(window).width(); // ENVIA O VALOR PARA O INPUT $('#valor').val(width); // APÓS O TEMPO ENVIA O FORMULÁRIO setTimeout(function(){ $("#submit").trigger("click") }, 3000); <?php } ?>

Após os 3 segundos é dado o submit. Sendo que no exemplo que postei na mensagem mais recente o submit vai para o mesmo documento.

Por lógica, se você vai enviar os dados do formulário para outro documento só vai funcionar o submit, o resize não.

Porque se entrar na página e der o submit já vai anular o resize porque a página foi redirecionada.

Você tem que estabelecer uma lógica para enviar os dados no primeiro acesso ou no resize. Caso contrário dá conflito.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

Re: Código jQuery que captura largura não trabalha com $_POST

23-09-2017 09:35

Não sei se compreendi o que você quis dizer.

Na minha construção, conforme minha mensagem de n.° 13, o arquivo teste.php não captura a largura. Ele somente captura um valor no banco de dados, que é enviado para o arquivo teste2.php por post para ser usado como filtro numa consulta SQL; sendo a largura capturada no arquivo teste2.php (no qual tem de ser exibida a mensagem "GIRE SEU DISPOSITIVO" conforme a largura capturada), que necessita ser capturada no carregamento da página e no resize.

Pelo que você disse, eu estou entendendo, baseado na minha construção, que devo chamar a função da largura no carregamento no arquivo teste2.php, e, ao se girar o dispositivo chamando a função no resize, o valor capturado deve ser enviado para teste3.php, para exibir a mensagem "GIRE SEU DISPOSITIVO". É isso?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Código jQuery que captura largura não trabalha com $_POST

23-09-2017 11:04

Então seriam 3 páginas?

teste.php só envia os dados do formulário
teste2.php recebe os dados, captura a largura da tela no carregamento, e envia os dados pelo formulário via jQuery
teste3.php recebe os dados do post para a consulta
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado