Как получить значение с помощью AJAX с JSON? - PullRequest
0 голосов
/ 09 октября 2018

Привет, друг, это мой первый вопрос по stackoverflow. Я столкнулся с проблемой в Json, которая не работает с ajax.Я не в состоянии понять, и я не понял, где проблема.Myb код следующий ... У меня есть файл action.php Если я пытаюсь без JSON его работает, но я использую JSON не получить никакого ответа

<?php 
 $con = new mysqli("localhost", "root", "", "psycho"); /* REPLACE NECESSARY DATA INSIDE */

/* CHECK CONNECTION */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
 exit();
} 
if($stmt = $con->prepare("SELECT qid, question, opt1, opt2, opt3, opt4 FROM question ORDER BY qid LIMIT 1")){
$stmt->execute(); /* EXECUTE THE QUERY */
$stmt->bind_result($qid, $question, $opt1, $opt2, $opt3, $opt4); /* BIND THE RESULT TO THESE VARIABLES */
$stmt->fetch(); /* FETCH THE RESULT */
$stmt->close();
} /* END OF PREPARED STATEMENT */
?>
<h1 id="question"><?php echo $question; ?></h1>
<input type="hidden" id="qid" value="<?php echo $qid; ?>">
<input type="radio" name="a1" id="op1" value="<?php echo $opt1; ?>"><span id="op1text"><?php echo $opt1; ?></span><br/>
<input type="radio" name="a1" id="op2" value="<?php echo $opt2; ?>"><span id="op2text"><?php echo $opt2; ?></span><br/>
<input type="radio" name="a1" id="op3" value="<?php echo $opt3; ?>"><span id="op3text"><?php echo $opt3; ?></span><br/>
<input type="radio" name="a1" id="op4" value="<?php echo $opt4; ?>"><span id="op4text"><?php echo $opt4; ?></span><br/>
<input type="submit" name="submit" id="submit" value="Next"> <!-- THIS SERVES AS THE SUBMIT AND NEXT BUTTON -->
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
 $(document).ready(function(){
  $("#submit").click(function(){ /* WHEN SUBMIT IS CLICKED */
  var qid = $("#qid").val(); /* GET THE question id */
  var selected = $("input[type='radio'][name='a1']:checked");
  if (selected.length > 0) { /* CHECK THE SELECTED RADIO BUTTON */
    answer = selected.val();
  }
  $.ajax({
    type: "POST", /* THE METHOD WE WILL BE USING TO PASS THE DATA */
    url: "action.php", /* THIS IS WHERE THE DATA WILL GO */
    data: {"questionid" : qid, "answer" : answer}, /* THE DATA WE WILL BE PASSING */
    dataType : 'json',
    success: function(result){ /* WHEN IT IS SUCCESSFUL */
      /* THIS WILL REPLACE THE DATA IN OUR QUESTION PAGE */
      $("#qid").val(result.questionid);
      $("#question").html(result.question);
      $("#op1").val(result.op1);
      $("#op2").val(result.op2);
      $("#op3").val(result.op3);
      $("#op4").val(result.op4);
      $("#op1text").html(result.op1);
      $("#op2text").html(result.op2);
      $("#op3text").html(result.op3);
      $("#op4text").html(result.op4);
    }
  }); /* END OF AJAX */
});
});
 </script>

Мой второй код файла здесь action.php

<?php
 if(isset($_POST["questionid"])){
/* INCLUDE OUR NEW ESTABLISHED CONNECTION HERE */
/* PUT HERE YOUR INSERT QUERY WHICH STORES THE USER'S ANSWERS */

/* THEN FETCH THE NEXT QUESTION */
if($stmt = $con->prepare("SELECT qid, question, opt1, opt2, opt3, opt4 FROM question WHERE qid > ? ORDER BY qid LIMIT 1")){
  $stmt->bind_param("i", $_POST["questionid"]);
  $stmt->execute();
  $stmt->bind_result($qid, $question, $opt1, $opt2, $opt3, $opt4);
  $stmt->fetch();
  $stmt->close();
} /* END OF PREPARED STATEMENT */

/* THIS SET OF DATA WILL REPLACE THE DATA IN OUR CURRENT QUESTION PAGE */
echo json_encode(array("questionid" => $qid, "question" => $question, "op1" => $opt1, "op2" => $opt2, "op3" => $opt3, "op4", => op4));
   } /* END OF ISSET */
?>

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

используйте этот код:

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script>
     $(document).ready(function(){
      $("#submit").click(function(){ /* WHEN SUBMIT IS CLICKED */
      var qid = $("#qid").val(); /* GET THE question id */
      var selected = $("input[type='radio'][name='a1']:checked");
      if (selected.length > 0) { /* CHECK THE SELECTED RADIO BUTTON */
        answer = selected.val();
      }
      $.ajax({
        type: "POST", /* THE METHOD WE WILL BE USING TO PASS THE DATA */
        url: "action.php", /* THIS IS WHERE THE DATA WILL GO */
        data: {"questionid" : qid, "answer" : answer}, /* THE DATA WE WILL BE PASSING */
        dataType : 'json',
        success: function(data){ /* WHEN IT IS SUCCESSFUL */
          /* THIS WILL REPLACE THE DATA IN OUR QUESTION PAGE */

           var result = JSON.parse(data);              

          $("#qid").val(result.questionid);
          $("#question").html(result.question);
          $("#op1").val(result.op1);
          $("#op2").val(result.op2);
          $("#op3").val(result.op3);
          $("#op4").val(result.op4);
          $("#op1text").html(result.op1);
          $("#op2text").html(result.op2);
          $("#op3text").html(result.op3);
          $("#op4text").html(result.op4);
        }
      }); /* END OF AJAX */
    });
    });
     </script>
0 голосов
/ 09 октября 2018

Вы должны включить следующий код для изменения типа данных в заголовке.

header('Content-Type: application/json');

Как только вы добавите это в свой код PHP, JQuery сможет читать JSONЭто объясняется тем, что без указания этого типа контента PHP, естественно, отвечает типом контента HTML, если не указано иное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...