php-我第一次尝试Ajax时无法调用.php文件。(用另一个下拉列表填充下拉列表)

php-我第一次尝试Ajax时无法调用.php文件。(用另一个下拉列表填充下拉列表),php,html,ajax,Php,Html,Ajax,表book包含:book\u id、book\u title 表bookext包含:bookext\u id、book\u idforeigned book键、bookext\u标记 这是我的脚本,我想填充我的下拉列表 <script> function get_bookextt() { var request = $.ajax({

表book包含:book\u id、book\u title 表bookext包含:bookext\u id、book\u idforeigned book键、bookext\u标记

这是我的脚本,我想填充我的下拉列表

<script>                            
                function get_bookextt() {
                    var request = $.ajax({
                        url: "getbookext.php",
                        type: "POST",           
                        dataType: "html"
                    });

                    request.done(function(msg) {
                        $("#get_bookext").html(msg);            
                    });

                    request.fail(function(jqXHR, textStatus) {
                        alert( "Request failed: " + textStatus );
                    });
                }

        </script>
看到这些代码,这里是我的第一个下拉列表的主体部分,它将关联必须出现的第二个下拉列表

<select id="book" name='book' onchange="get_bookextt();">
<option value=''>Select</option>
<?php while ($row = mysql_fetch_array($result)) {
    echo "<option value='" . $row['book_id'] . "'>" . $row['book_title'] . "</option>";}
?>
</select>
<div id="get_bookext"></div>
我真的觉得把我的整个getbookext.php文件都放在这里很傻,因为我觉得这就是我搞砸的地方

<?php
include 'db_connection.php';
if ($_POST) {
    $book_id = $_POST['book_id'];
    if ($book_id != '') {
       $sql1 = "SELECT * FROM bookext WHERE book_id=" . $book_id;
       $result1 = mysql_query($sql1);
       echo "<select name='bookext'>";
       echo "<option value=''>Select</option>"; 
       while ($row = mysql_fetch_array($result1)) {
          echo "<option value='" . $row['bookext_id'] . "'>" . $row['bookext_tag'] . "</option>";}
       echo "</select>";
    }
    else
    {
        echo  '';
    }
}

?>
请告诉我哪里出错了

-编辑- 这是我的整个头部区域

include 'db_connection.php';

$sql = "SELECT * FROM book";
$result = mysql_query($sql);
?>
<script>                            
function get_bookextt() {
     var request = $.ajax({
                         url: "getbookext.php",
                         type: "POST",
                         data: {'book_id', $(this).val()},
                         dataType: "html"
                    });
     request.done(function(msg) {
          $("#get_bookext").html(msg);            
     });
     request.fail(function(jqXHR, textStatus) {
          alert( "Request failed: " + textStatus );
     });
}



        </script>
而这里是整个身体区域

<select id="book" name='book' onchange="get_bookextt($(this).val());">
<option value=''>Select</option>
<?php while ($row = mysql_fetch_array($result)) {
    echo "<option value='" . $row['book_id'] . "'>" . $row['book_title'] . "</option>";}
?>
</select>
<div id="get_bookext"></div> // Sub will be appended here using ajax

PS1。我不明白为什么要得到$this.val;在我的记事本++中没有突出显示。您的AJAX请求中没有PHP需要返回数据的book_id

所以你的JS函数应该是

function get_bookextt(book_id) {
     var request = $.ajax({
                         url: "getbookext.php",
                         type: "POST",
                         data: {'book_id': book_id},
                         dataType: "html"
                    });
     request.done(function(msg) {
          $("#get_bookext").html(msg);            
     });
     request.fail(function(jqXHR, textStatus) {
          alert( "Request failed: " + textStatus );
     });
}
然后HTML应在更改时发送值,以便将选择切换到:

<select id="book" name='book' onchange="get_bookextt($(this).val());">
备选案文2:

$book_id = mysql_real_escape_string($_POST['book_id']);
这里有一个线程,当你切换到如何防止这些

更新


它现在在做什么?看到任何错误,空白页吗?控制台说什么?没什么。当我从第一个下拉菜单中选择时,下拉应该降落的DIV不会改变。请考虑切换到PDO。另外,该代码要求sql注入。@Alex是的,我正在考虑切换到PDO,因为sql注入。但我真的需要生产这些东西。出于演示目的。您没有将book_id与ajax请求一起发送。感谢您的努力,但它仍然没有显示在中:ajax现在返回结果了吗?如果您查看AJAX请求,其中的book_id是否具有所选的值?嘿,谢谢您的文章。这里说的是未捕获的SyntaxError:意外标记,而且没有读过脚本?好了,兄弟,我真的很感谢你所做的一切。但第一个错误并没有消失。现在,每当我从我的第一个下拉列表中选择时,开发人员工具都会给我一个错误uncaughtreferenceerror:get\u bookextt没有定义onchange@testing.php:28你能用你的代码更新这个问题吗?这是我的本地设置工作很好。我将用我的测试版本更新答案。
$book_id = mysql_real_escape_string($_POST['book_id']);
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script>
</head>
<body>
<script type="text/javascript">
function get_bookextt(book_id) {
     var request = $.ajax({
                         url: "getbookext.php",
                         type: "POST",
                         data: {'book_id': book_id},
                         dataType: "html"
                    });
     request.done(function(msg) {
          $("#get_bookext").html(msg);            
     });
     request.fail(function(jqXHR, textStatus) {
          alert( "Request failed: " + textStatus );
     });
}
</script>
<select id="book" name='book' onchange="get_bookextt($(this).val());">
<option value=''>Select</option>
    <option value='1'>test</option>
</select>
<div id="get_bookext"></div>
</body>
</html>