AJAX 不会使用 Jquery 从 PHP 文件中获取数据

AJAX doesn't get data from PHP file with Jquery

本文关键字:文件 PHP 获取 数据 Jquery AJAX      更新时间:2023-09-26

我正在尝试将数据发布到 PHP 文件,但我无法从 PHP 文件接收任何数据。让我添加代码。这是我的jQuery函数:

$(document).ready(function () {
$(function () {
$('a[class="some-class"]').click(function(){
   var somedata = $(this).attr("id");
   $.ajax({
      url: "foo.php", 
      type: "POST",
      data: "id=" + somedata,
      success: function(){
          $("#someid").html();
      },
      error:function(){
          alert("AJAX request was a failure");
      }
    });
    });
    });
});

这是我的PHP文件:

<?php
$data = $_POST['id'];
$con = mysqli_connect('localhost','root','','somedatabase');
if (!$con) {
  die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"database");
$sql="SELECT * FROM sometable WHERE id = '".$data."'";
$result = mysqli_query($con,$sql);

while($row = mysqli_fetch_array($result)) {
 echo $row['info'];
 }
mysqli_close($con);
?>

这是我在 HTML 文件中拥有的:

<p id="someid"></p>
<a href="#page2" class="some-class" id="1">Data1</a>
<a href="#page2" class="some-class" id="2">Data2</a>

注意:此网站是水平滚动的,不应刷新。当我单击链接(如 Data1(时,它会转到另一个页面而不会从 PHP 文件中获取数据

您有几个问题:

  1. 您没有使用其他答案中提到的数据:
    success: function(data){ $("#someid").html(data); },
  2. 您没有取消默认的点击操作,因此您的链接将被跟踪:
    $('a[class="some-class"]').click(function(e){ e.preventDefault(); ... ;
  3. 由于 id 是整数,您可以使用 data: "id=" + somedata,尽管发送对象更安全somedata以防包含需要转义的字符:
    data: {"id": somedata}, ;
  4. 您有一个 sql 注入问题。您应该将变量转换为整数或使用预准备语句:
    $data = (int) $_POST['id']; ;
  5. 正如另一个答案中也提到的,您有两个$(document).ready()函数,一个包装另一个。你只需要一个。
success: function(){
          $("#someid").html();
      },

应该是:

success: function(data){
          $("#someid").html(data);
      },

你应该在成功中添加参数

success: function(data){ //Added data parameter
      console.log(data);
      $("#someid").html(data);
  },

数据获取您在 PHP end 中回显的值。

这个:

  success: function(data){
      $("#someid").html(data);
  },

并且您已经准备好了两个文档,因此请删除:

$(document).ready(function () { ...
});
data: "id=" + somedata,

将其更改为:

data: { id : somedata }