Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

115
Visualizações
Envío de datos variables como publicación mediante Ajax

He estado investigando un problema, pero no puedo encontrar la manera de resolverlo o cuál es la solución. Estoy trabajando en mi sitio web usando infinityfree como usuario gratuito. Estoy creando una página de revisión simple donde el usuario puede escribir y luego calificarla con estrellas. Las reseñas se envían a mi base de datos y el texto es correcto, pero la cantidad de estrellas no se agrega a ($_POST["ratedIndex"]) .

Cuando he intentado hacer eco de la variable ratedIndex , está vacía. Parece que no se envía a través de Ajax según lo previsto, y no puedo entender por qué. La alerta no se activa, pero los clics en las estrellas se registran en el panel de red en el elemento de inspección de cromo. Con suerte, no he sido un completo idiota y me perdí algo esencial ya que soy nuevo en la creación de sitios web, y cualquier ayuda es muy aprendiz.

información del juego.php:

 <?php if ($_SERVER["REQUEST_METHOD"] == "POST"){ require_once 'DBConnect.php'; $game; $user; $review; $userid; $ratedIndex; $stmt = $conn->prepare("INSERT INTO reviews(game, user, userid, review, indexStar) VALUES (?,?,?,?,?)"); $stmt->bind_param("sssss",$game, $user, $userid, $review, $ratedIndex); $userid = $_SESSION["userid"]; $game = $gameTitle; $user = $_SESSION["username"]; $review = $_POST["uploadReview"]; $ratedIndex = ($_POST["ratedIndex"]); $stmt->execute(); } ?> <?php $id = $_SESSION["userid"]; $gamename = $gameTitle; $rowzero ="0"; $sql_ifreviewexist ="SELECT * FROM reviews WHERE reviews.game=?"; $exist = $conn->prepare($sql_ifreviewexist); $exist->bind_param('s', $gamename); $exist->execute(); $res = $exist->get_result(); $reviewexist_row = mysqli_num_rows($res); if((isset($_SESSION["username"])) && ($reviewexist_row==$rowzero)) { echo ' <div id="noreviewsExists"> <div class="instructions"><p>Write a review for '.$gamename.'</p></div> <form id="reviewForm" method="POST" action=""> <textarea type="text" id="reviewTextarea" name="uploadReview"></textarea> <div class="reviewStars"> <i class="fa fa-star" data-index="0"></i> <i class="fa fa-star" data-index="1"></i> <i class="fa fa-star" data-index="2"></i> <i class="fa fa-star" data-index="3"></i> <i class="fa fa-star" data-index="4"></i> </div> <div id="submitReview"> <button id="submitButton" type="submit" form="reviewForm">Submit</button> </div> </form> </div>'; ?> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script> var ratedIndex = -1; $(document).ready(function () { resetStarColors(); $('.fa-star').on('click', function (){ ratedIndex = parseInt($(this).data('index')); $.ajax({ url: "gameInfo.php", method: "POST", dataType: 'json', data: { ratedIndex: ratedIndex }, success: function (data){ alert("ok"); } }); }); $('.fa-star').mouseover(function () { resetStarColors(); var currentIndex = parseInt($(this).data('index')); setStars(currentIndex); }); $('.fa-star').mouseleave(function () { resetStarColors(); if(ratedIndex != -1) setStars(ratedIndex); }); }); function setStars(max) { for (var i=0; i <=max; i++) $('.fa-star:eq('+i+')').css('color', 'yellow'); } function resetStarColors() { $('.fa-star').css('color', 'black'); } </script>

Editar:

Después de un poco de información de ADyson , he hecho algo como esto:

 $test = $_POST["ratedIndex"]; if((isset($_SESSION["username"])) && ($reviewexist_row==$rowzero)) { echo '<div>'.$test.'</div>'; ...}

cuando hago clic en las estrellas, aparece en el panel de red en vista previa imagen

Así que ahora estoy aún más desconcertado de por qué no funciona cuando trato de insertarlo en la mesa.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Sé que esta no es la respuesta correcta para la pregunta, pero es una alternativa y tal vez le resulte útil. La solución que se me ocurrió fue tomar el valor dado por su jquery y establecerlo en un valor de entrada invisible dentro del formulario sumbit.

 <form id="reviewForm" method="POST" action=""> <textarea type="text" id="reviewTextarea"name="uploadReview</textarea> <div id="submitReview"> <input type="hidden" id="jqValue" name="jqueryValue" value=""/> <button id="submitButton" type="submit" form="reviewForm">Submit</button> </div>

Luego tome la variable ratedIndex y déselo a su valor jqValue de entrada como este

 $('.fa-star').on('click', function (){ ratedIndex = parseInt($(this).data('index')); $("#jqValue").val(ratedIndex); });

Por último, llame a su php $ratedIndex=$_POST["jqueryValue"];

Como dije, esta es solo una forma alternativa de resolver su problema si está atascado y no puede hacer que ajax funcione, puede usar esto. Lo publiqué porque es posible que no hayas pensado en hacerlo de esta manera.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda