Ir para conteúdo
nosredna

Erro de Depreciação no AJAX

Recommended Posts

Fala galera,

 

criei um site em PHP e fiz uma aplicação de chat em tempo real utilizando o PHP + Ajax + Pusher.

A aplicação funcionou redondinha no local. Porém, quando eu subi o site no servidor (que por sinal usa o Linux como SO), a aplicação dá o seguinte erro:

 

[Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience.

 

Já tentei colocar o 'async:true' e nada... alguém sabe me informar se o fato do servidor usar o Linux tem alguma coisa a ver com o erro? alguém tem alguma ideia do que eu poderia fazer pra resolver?

 

Valeu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é um warning de boa prática do navegador.

 

nada a ver com o servidor linux. Como está o teu código ajax?

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado quanto ao esclarecimento do SO.

Então eu não estou com o código aqui, mais tarde eu colo ele aqui para ilustrar.

Porém, no meu 'localhost' roda certinho, quando eu clico no link abre a janela do chat e tudo mais; mas quando eu faço o upload do arquivo no servidor exatamente do mesmo jeito e quando eu clico no link da aplicação nada acontece (não abre a janela do chat) e esse aviso aparece no console do navegador (todos os navegadores).

Esse aviso de boas praticas não deveria rodar a aplicação normalmente e só aparecer o "erro" no console?

 

Obrigado por enquanto.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá:

 

No PHP o link para chamar a função é:

 

<a class="nav-link user-chat" href="javascript:;" user-id="11" data-toggle="tooltip" data-placement="left" title="Usuário 11">

 

Que chama a função JS:

$(document).on('click', '.user-chat', function(event){
   event.preventDefault(); 
   
   var user_id = $(this).attr('user-id');
   if($('.chat-user-'+user_id).length < 1){
	   var count_chat_box = $('.chat-box').length;
	   if(count_chat_box < 3){
			$.get('js/ChatBox.php', {id:user_id}, function(res){
				$('.chat-container').append(res);
			});	   
	   }
   }
});

A função JS abre um arquivo PHP chamado ChatBox, que seria a janela do chat.

No 'localhost' está exatamente assim e eu fiz o upload do mesmo jeito.

 

Como eu não sou da área de programação e estou tentando ser autodidata, a minha aplicação foi baseada na playlist: 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

e quando você acessa:

 

www.site.com.br/js/ChatBox.php?id=12

 

o que aparece? logicamente, trocando o id por algo válido e o www.site pelo seu domínio.

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então assim não funciona, pq o ChatBox é uma chamada interna, ele não altera a URL.

Por exemplo, sabe quando você clica em algum contato do Facebook e abre a janela do chat sem vínculos com a URL? Funciona exatamente igual.

Então se eu chamar: www.site.com.br/js/ChatBox.php?id=12 dá página não encontrada...

Eu não estou entendendo o porque de funcionar no local e quando upado no servidor acontece o erro.

Eu fiz um teste de apagar a função dentro do script JS, já que eu tinha algumas funções no msm arquivo, só para saber onde estava o erro e quando clico obviamente não aparece a janela do chat, mas também não apresenta o warning.

 

P.S.: A janela do chat que eu digo é da mesma forma que a do Facebook. Para entender melhor e ilustrar considere minha página semelhante ao Face, com a janela de chat igual, a barra lateral de contatos e etc.

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites
59 minutos atrás, gabrieldarezzo disse:

 

Obrigado pela recomendação de leitura, realmente entendi alguns conceitos.

 

Mas, de toda forma não consegui achar o erro no meu script, visto que como disse anteriormente, roda no local mas não no servidor...

 

Perdoem-me pela falta de conhecimento, mas estou me esforçando para aprender. De toda forma agradeço muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você subiu o arquivo ChatBox.php para produção?

Caso tenha subido, qual a URL para acessar ele?

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
24 minutos atrás, William Bruno disse:

Você subiu o arquivo ChatBox.php para produção?

Caso tenha subido, qual a URL para acessar ele?

 

Subi sim, porém o acesso está restrito.

Prefere que eu tire a restrição ou cole o código aqui?

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então acesse pelo seu browser e veja o que ele responde.

 

www.site.com.br/js/ChatBox.php?id=12

 

trocando o www.site pelo seu domínio e o 12 por um id válido.

se não responder corretamente, corrija isso.

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acompanha o envio pela aba network:

 

https://github.com/gabrieldarezzo/desafiosInternos/tree/master/ajax#5---acompanhar-oq-foi-enviado

 

Veja se está enviado os parâmetros do POST (ou GET)


A resposta HTTP (está retornando um 404?)

A URL enviada.

 

Já vi casos onde o desenvolvedor se atrapalhou por não usar um 'BASE_PATH' ou então não dominar o conceito de url relativa.

 

 

 

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá senhores,

 

Agradeço a ajuda, como eu disse eu não sou programador, mas tenho aprendido muito aqui no fórum.

Acabei passando um pente fino em tudo e consegui resolver.

O código JS estava assim:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

$(document).on('click', '.user-chat', function(event){
   event.preventDefault(); 
   
   var user_id = $(this).attr('user-id');
   if($('.chat-user-'+user_id).length < 1){
	   var count_chat_box = $('.chat-box').length;
	   if(count_chat_box < 3){
			$.get('js/ChatBox.php', {id:user_id}, function(res){  <-- observe o 'C' maiúsculo aqui
				$('.chat-container').append(res);
			});	   
	   }
   }
});

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Só que o arquivo em PHP estava nomeado assim: chatBox.php <-- observe o 'C' minúsculo aqui

Isso mesmo...mudei de minúsculo para maiúsculo e funcionou. Pode isso?

 

Valeu galera, pode fechar o tópico, por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom q você encontrou o problema.

 

Porem a depuração da aba network teria te ajudado nessa charada.

Provavelmente estava dando um 404 (Pagina não encontrada)

 

Então era só verificar a URL.

 

Abs. 

 

 

 

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é...

Na verdade só descobri o problema quando adicionei a seguinte linha no JS:  'console.log(res);'.

Ai descobri um 404 e passei uma geral para ver onde era o equivoco.

Bom, em todo caso, mais um aprendizado. E fico agradecido, de coração, pela ajuda recebida dos amigos...

 

Até a próxima dúvida...:smile:

  • +1 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 freitaz
      Bom Quando tento alterar o formulário ele me trás a resposta "Atualizado com sucesso" mas não é atualizado no banco de dados se alguém poder me ajudar agradeço !
       
      código de cadastro
       
      <div class="card-body"> <?php $executivo = new Exe(); if ($_SERVER["REQUEST_METHOD"] == "GET") { //Using GET $id = $_GET['id']; $titulo = $_GET['titulo']; $categoria = $_GET['categoria']; $action = $_GET['action']; $file = $_GET['arquivo']; } if (isset($_POST["btnPublicar"])) { $id = $_POST['id']; $titulo = $_POST['titulo']; $categoria = $_POST['categoria']; $action = $_POST['action']; $file = $_POST['filetext']; if ($_SERVER["REQUEST_METHOD"] == "POST") { // Check if file was uploaded without errors $filename = $_FILES["file"]["name"]; $filetype = $_FILES["file"]["type"]; $filesize = $_FILES["file"]["size"]; // Verify file extension $ext = pathinfo($filename, PATHINFO_EXTENSION); // Verify file size - 5MB maximum $maxsize = 5 * 1024 * 1024; if ($filesize > $maxsize) { die("ERRO: Tamanho máximo de arquivo igual a 5MB."); } // Check whether file exists before uploading it if (file_exists("uploads/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " já existe na pasta."; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]); } } #fim do Arquivo print_r($fmsg); $executivo->setID($id); $executivo->setTitulo($titulo); $executivo->setCategoria($categoria); $executivo->setArquivo($filename); try { if ($action == "alterar") { if ($filename == "") { $executivo->setArquivo($file); } else { if (file_exists("uploads/" . $file)) { $path = 'uploads/' . $file; unlink($path); } } $executivo->update($executivo->getID(), $executivo->getTitulo(), $executivo->getCategoria(), $executivo->getArquivo()); $texto = "Atualizado com sucesso"; } else { $executivo->insert($executivo->getTitulo(), $executivo->getCategoria(), $executivo->getArquivo()); $texto = "Inserido com sucesso"; } } catch (PDOException $e) { echo 'ERRO: ' . $e->getMessage(); } } ?> <h4 class="header-title">Cadastro Downloads Executivos</h4> <form method="POST" enctype="multipart/form-data"> <div class="form-group"> <input type="text" id="action" name="action" hidden="true" value="<?php echo $action; ?>" > <label class="col-form-label">Título</label> <input class="form-control" type="text" name="titulo" value="<?php echo $titulo; ?>" > </div> <div class="form-group"> <label class="col-form-label">Categoria</label> <select class="form-control" name="categoria"> <option >Select</option> <option value="Executivo">Executivo</option> <option value="Legislativo">Legislativo</option> <option value="Judiciario">Judiciário</option> </select> </div> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text">Arquivo</span> </div> <div class="custom-file"> <input type="file" name="file"/> <a href="<?php echo "uploads/" . $file; ?>"><?php echo $file; ?></a> <input type="text" id="filetext" name="filetext" hidden="true" value="<?php echo $file; ?>" > </div> </div> <button class="btnPublicar" name="btnPublicar"><span>Publicar </span></button> </form> <?php echo $texto; ?> </div>  
      Essa e a codigo da classe
       
      <?php require_once 'Crud.php'; class Exe extends Crud { protected $table = 'exe'; private $arquivo; private $categoria; private $id; private $titulo; public function setArquivo($arquivo) { $this->arquivo = $arquivo; } public function getArquivo() { return $this->arquivo; } public function setCategoria($categoria) { $this->categoria = $categoria; } public function getCategoria() { return $this->categoria; } public function setID($id) { $this->id = $id; } public function getID() { return $this->id; } public function setTitulo($titulo) { $this->titulo = $titulo; } public function getTitulo() { return $this->titulo; } public function insert($titulo, $categoria, $arquivo) { try { $sql = "INSERT INTO $this->table (titulo, categoria, arquivo) VALUES (:titulo, :categoria, :arquivo)"; $stmt = DB::prepare($sql); $stmt->execute(array('titulo' => $titulo, 'categoria' => $categoria, 'arquivo' => $arquivo)); } catch (PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } public function update($id, $categoria, $titulo, $arquivo) { try { $sql = "UPDATE $this->table SET categoria = :categoria, titulo = :titulo, arquivo= :arquivo WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->execute(array('id' => $id, 'titulo' => $titulo, 'categoria' => $categoria, 'arquivo' => $arquivo)); } catch (PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } } ?>  
      Se alguem poder me orientar como ajustar agradeço!
    • Por rogarfil
      <div class="video-sec">
        <h4 class="heading-small">Mídias</h4>
        <div class="video-block">
        <ul class="nav nav-pills justify-content-center mb-4" id="pills-nav" role="tablist">      
        <?php
        // Atribui uma conexão PDO
        $conexao = Connection::getInstance();
        $controle_ativo = 2;
        //$controle_num_slide = 1;
        $sql = "SELECT * FROM db_post WHERE status=1 AND category='Mídia' ORDER BY created DESC LIMIT 3";
        $stm = $conexao->prepare($sql);
        $stm->execute();
        while($post = $stm->fetch(PDO::FETCH_OBJ)) {
          if($controle_ativo == 2) { ?>
            <li class="nav-item">
              <a class="nav-link active" id="nav-pills-01" data-toggle="pill" href="#<?=$post->post_id?>"><?=$post->title?></a>
            </li>
          <?php
            $controle_ativo = 1;
          } else {
          ?>
            <li class="nav-item">
              <a class="nav-link" id="nav-pills-02" data-toggle="pill" href="#<?=$post->post_id?>"><?=$post->title?></a>
            </li>
          <?php
            //$controle_num_slide++;
          }
        }
        ?>
      </ul>
      <div class="tab-content" id="nav-pills-content">      
        <?php
        // Atribui uma conexão PDO
        $conexao = Connection::getInstance();
        $controle_ativo = 2;
        $sql = "SELECT * FROM db_post WHERE status=1 AND category='Mídia' ORDER BY created DESC LIMIT 3";
        $stm = $conexao->prepare($sql);
        $stm->execute();
        while($post = $stm->fetch(PDO::FETCH_OBJ)) {
          if($controle_ativo == 2) { ?>
        <div class="tab-pane fade show active" id="<?=$post->post_id?>" role="tabpanel">
          <div class="row">
            <div class="col-sm-6">
              <div class="embed-responsive embed-responsive-16by9"> <!-- 21by9, 16by9, 4by3, 1by1 -->
                <iframe class="embed-responsive-item" src="<?=$post->url?>"></iframe>
              </div>
            </div>
            <div class="col-sm-6">
              <p class="display-5"><?=$post->content?></p>
              <p class="card-text">
                <small class="text-time">
                  <em>Publicado em <?=date('M,d',strtotime($post->created))?></em>
                </small>
              </p>
            </div>
          </div>
        </div>
          <?php
            $controle_ativo = 1;
          } else {
          ?>
        <div class="tab-pane fade" id="<?=$post->post_id?>a" role="tabpanel">
          <div class="row">
            <div class="col-sm-6">
              <div class="embed-responsive embed-responsive-16by9"> <!-- 21by9, 16by9, 4by3, 1by1 -->
                <iframe class="embed-responsive-item" src="<?=$post->url?>"></iframe>
              </div>
            </div>
            <div class="col-sm-6">
              <p class="display-5"><?=$post->content?></p>
              <p class="card-text">
                <small class="text-time">
                  <em>Publicado em <?=date('M,d',strtotime($post->created))?></em>
                </small>
              </p>
            </div>
          </div>
        </div>
          <?php
          }
        }
        ?>
      </div>
      Há aba ativa está perfeita quando clico na segunda ou terceira aba nada acontece (não abre), tenho que deixar dinâmico. Ainda pergunto existe uma maneira com javascript para ativar a aba e seu conteúdo.

    • Por kadu silva
      Boa Noite
       
      Estou Criando Um Site Para Um Cliente E Ele Deseja Colocar Um Sistema De Buscar.
      Já Criei Os Códigos Em Php E O Banco De Dados No Phpmyadmin. Porém, Agora Necessito De Ajuda Para Como Colocar Ele Dentro Do Site Funcionando.
      O Sistema De Pesquisa Durante A Fase De Teste, Estar Dando Tudo Certo, Faz A Pesquisa Certinho, Eu Só Não Sei Como Colocar Dentro Do Site Funcionando, Necessito De Muita Ajuda.
    • Por AllysonSouza
      Boa noite, to precisando de ajuda, eu to listando os dados direto do banco de dados em um tabela, so que ela faz isso linha por linha como é feito, eu queria que ele listasse duas tabelas na mesma pagina, só que dando continuidade da busca do banco de dados, exemplo. ele busca 50 resultados no banco, ai ele pega o maximo de linhas possivel em uma tabela, e do outro lado da tela ele lista o restante dos dados...enfim, eis meu codigo, exibindo tudo em uma tabela só
      <?php $categoria = $_GET['categoria']; $sql = "SELECT p.id AS idProd, p.nome AS produto, p.largura, p.comprimento, p.estilo, p.valor, p.valorCompra, p.estoque, p.imagem, c.id AS idCat, c.nome AS categoria, p.vendidos, p.tipo, p.detalhe FROM produtos p INNER JOIN categorias c ON p.categorias_id=c.id WHERE c.id=$categoria ORDER BY p.nome, p.largura ASC"; $res = mysqli_query($con, $sql); $dados = mysqli_fetch_array($res); ?> <div class="panel-footer"> <table class="table table-bordered table-hover text-center"> <thead > <tr ><td colspan="5" style="text-align: center;"> <?php echo $dados['categoria']?></td></tr> </thead> <thead > <tr > <th width="250" class="text-center" >Nome</th> <th width="10" class="text-center">Tamanho</th> <th width="100" class="text-center">Valor</th> </tr> </thead> <tbody> <?php while($linha = mysqli_fetch_array($res)){ ?> <tr > <td > <?php echo $linha['produto']; echo " "; echo $linha['largura'] ; echo " "; echo $linha['detalhe']; echo" "; if($linha['estilo']==0){ echo ''; }else if($linha['estilo']==1){ echo '(Bruta)'; }else if($linha['estilo']==2){ echo '(Plainada)';}?> <label class='label label-danger'><?php if($linha['tipo'] == 0 ){ echo 'ML';}; ?></label> <label class='label label-primary'><?php if($linha['tipo'] == 1 ){ echo 'M²';}; ?></label> <label class='label label-warning'><?php if($linha['tipo'] == 2 ){ echo 'Peça';}; ?></label> <label class='label label-info'><?php if($linha['tipo'] == 3 ){ echo 'Duzia';}; ?></label> <label class='label label-success'><?php if($linha['tipo'] == 4 ){ echo 'KG';}; ?></label> </td> <td><?php if($linha['comprimento']==0){ echo '1 M '; }else if($linha['comprimento']==1){ echo '3 M'; }else if($linha['comprimento']==2){ echo '4 M'; }else if($linha['comprimento']==3){ echo '5 M'; }else if($linha['comprimento']==4){ echo '6 M'; }else if($linha['comprimento']==5){ echo ''; } ?></td> <td> <?php echo Conversor::realBancoParaUsuario($linha['valor']); ?> </td> </tr> <?php } ?> </tbody> </table> </div>  
×

Informação importante

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