Если ваш 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);
}
}
});
Надеюсь, это поможет.