• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

131
Vistas
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 en cuanto a por qué no funciona cuando trato de insertarlo en la mesa.

about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Sé que esta no es la respuesta correcta para la pregunta, pero es una alternativa y tal vez la encuentre ú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.

about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda