【问题标题】:PHP/AJAX getting id from ajaxPHP/AJAX 从 ajax 获取 id
【发布时间】:2018-02-21 12:05:57
【问题描述】:

首先对英语感到抱歉:) 所以你好,我是一名新的网络程序员,我正在从事一些学校经理项目。

我必须显示学校的所有课程,然后当我点击课程时显示他的描述。

这是我的显示 php 代码

    <?php
$conn = mysqli_connect("localhost", "root", "", "school");

        if($conn){      
        $result = $conn->query("SELECT * FROM `courses`");
        if ($result->num_rows > 0){
            while($row = $result->fetch_assoc()){
                $id=$row['id'];
                echo '<div class="alex" onclick="myFunction(this.id)" id="'.$id.'">'.$row['name'].'</div>'.'<br>'.'<br>';
            }
        } 
        }else{
            echo die("connection faild"); 
        }  

        mysqli_close($conn);        
?>

如您所见,我给了它我要显示描述的表格的 ID。

这是我在js文件中的函数代码

     function myFunction(id){
        $.post(
            "api/courses/description.php",
            {  id:id }
        ).done(function( data ) {
            console.log(id);
            $('#desc').load("api/courses/description.php");
        });
    }

这是我的描述 php,用于获取 id 并显示描述:

<?php $conn = mysqli_connect("localhost", "root", "", "school");
if (isset($_POST['id'])) {
$id = $_POST['id'];
}
if($conn){ $result = $conn->query("SELECT * FROM courses WHERE id = '$id'");
    if ($result->num_rows > 0){
        while($row = $result->fetch_assoc()){
            echo $row['description'];
        }
    } 
    }else{
        echo die("connection faild"); 
    }     
    mysqli_close($conn); ?>

当我单击显示的课程时,我会在控制台上获得 ID! 对于我单击的每门课程,我都会在控制台上获取他的 ID。

希望你能帮助我! 我在上面坐了好几个小时都没有解决问题。

希望它的可读性 T_T

编辑:忘了说.. 我的错误是

注意:未定义的索引:id in C:\xampp\htdocs\project\api\courses\description.php 在第 9 行---不能 在 var dump 上获取 id NULL ---------------------------------------->

注意:未定义变量:id in C:\xampp\htdocs\project\api\courses\description.php 在第 10 行 (---->id = $id 未定义 -> $id)

【问题讨论】:

  • 你不是期待控制台上的id 值吗?究竟是什么问题?
  • 你没有说问题是什么,投票结束这个问题
  • 即使在编辑之后...您在文件中显示的代码是呈现进行 AJAX 调用的页面的代码,还是被 AJAX 调用的文件?它所指的行号是什么?请具体说明问题。
  • 第 9 行在哪里
  • 使用 $_POST['id'] 代替 $id 或将 $id 定义为 $id = $_POST['id']; $('#desc').load("api/courses/description.php");不提供 id 作为参数...实际上您正在执行 2 个请求 - 一个没用...等等

标签: javascript php mysql ajax database


【解决方案1】:

你打电话给description.php 两次。首先,您在 AJAX POST 请求中调用它并成功为其提供 id 参数。这不会产生错误。但是再看看你对那个操作的结果做了什么:

console.log(id);
$('#desc').load("api/courses/description.php");

你登录id,也成功了。然后您忽略data 响应并调用description.php 再次。这一次作为 AJAX GET 请求,您向它提供 id 参数。 是产生错误的原因。

不用发出第二个请求,只使用第一个请求的返回值。看起来你想要这样的东西:

console.log(id);
$('#desc').html(data);

【讨论】: