ajax接收来自php的响应,但不能与ajax一起使用

4zcjmb1e  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(285)

当我使用google chrome登录时,我有以下php和ajax代码 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>
q7solyqu

q7solyqu1#

如果php的响应是:

<{"response" : "2"}

这将是一个格式不正确的json字符串。这将由额外的 < 在文档的开头有一个。我建议您使用以下php开场白:

<?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数据转换为整数,以帮助确保恶意用户不会发送除数字以外的任何内容。我也只发送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);
    }
  }
});

希望有帮助。

相关问题