ajax получает ответ от php, но не может использовать с ajax - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть следующий код php и ajax, когда я регистрируюсь в Google Chrome с ctrl+shift+I на вкладке сети, он показывает ответ как <{"response" : "2"}, но этот ответ не может быть назначен на <h3> с идентификатором как respo

мой php

<<?php

$id = $_POST['reccount'];
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "", "testsite");
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Attempt update query execution
$sql = "SELECT * FROM paper WHERE ID=$id";
if(mysqli_query($link, $sql)){

$result = mysqli_query($link, $sql);
  while($row = mysqli_fetch_array($result)) {
    $data['response']= $row['response'];
    $data['ansnum'] = $row['q_no'];
}
echo json_encode($data);
} else {
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

// Close connection
mysqli_close($link);
?>

, ajax

 $.ajax({
        type:"POST",
        url:"<?php echo base_url();?>/shortfiles/loadans.php",
        data: {reccount: reccount},
         dataType:"JSON",
          success: function(data){
          alert (data.response);
           $('#respond').text(data.response);
                          }


                    })  ;

и html

<h3 ID="respond"style="margin-left:30px;">response</h3>

1 Ответ

0 голосов
/ 02 декабря 2018

Если ваш PHP ответит:

<{"response" : "2"}

Это будет неправильно отформатированная строка JSON.Это будет создано дополнительными <, которые у вас есть в начале документа.Я бы посоветовал вам иметь следующий PHP Opener:

<?php

Это должно исправить проблему, поэтому ответ JSON будет:

{"response" : "2"}

Это будет правильно проанализировать на этом этапе.

Пример

<?php
$id = (int)$_POST['reccount'];
$link = mysqli_connect("localhost", "root", "", "testsite");
header('Content-Type: application/json');
if($link === false){
  die("{\"error\": \"Could not connect. " . mysqli_connect_error() . "\"}");
}
$sql = "SELECT * FROM paper WHERE ID=$id";
if(mysqli_query($link, $sql)){
  $result = mysqli_query($link, $sql);
  while($row = mysqli_fetch_array($result)) {
    $data['response']= $row['response'];
    $data['ansnum'] = $row['q_no'];
  }
  echo json_encode($data);
} else {
  echo "{\"error\": \"Unable to execute $sql. " . mysqli_error($link) . "\"}";
}
mysqli_close($link);
?>

В моем примере я преобразовал данные POST в Integer, чтобы гарантировать, что злонамеренный пользователь не сможет отправить ничего, кроме цифры.Я также отправляю только данные JSON, даже при отправке ошибки.Использование header() помогает определить данные для браузера.

$.ajax({
  type:"POST",
  url:"<?php echo base_url();?>/shortfiles/loadans.php",
  data: {reccount: reccount},
  dataType:"JSON",
  success: function(data){
    console.log(data);
    if(data.error !== undefined){
      alert(data.error);
    } else {
      $('#respond').text(data.response);
    }
  }
});

Надеюсь, это поможет.

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