JQuery AJAX POST未将数据发送到PHP文件

JQuery AJAX POST未将数据发送到PHP文件,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我花了整整一天的时间试图找出问题所在,我在这里读到了很多类似的问题,但这似乎是一个特殊的问题 我需要一个AJAX调用来填充基于MySQL数据库先前选择的下拉列表,但它不起作用,因为POST没有将任何数据发送到我要发送到的PHP$id=$\u POST['id']文件。但是,如果我给它指定一个常量值,比如$id=1,它就可以正常工作,并从数据库返回预期的数据 这是AJAX代码: <script type="text/javascript"> $(document).ready(func

我花了整整一天的时间试图找出问题所在,我在这里读到了很多类似的问题,但这似乎是一个特殊的问题

我需要一个AJAX调用来填充基于MySQL数据库先前选择的下拉列表,但它不起作用,因为POST没有将任何数据发送到我要发送到的PHP$id=$\u POST['id']文件。但是,如果我给它指定一个常量值,比如$id=1,它就可以正常工作,并从数据库返回预期的数据

这是AJAX代码:

<script type="text/javascript">
$(document).ready(function()  
     { 

      $("#state").change(function()  
      {  

     var menuId = $(this).val();

        var request = $.ajax({
          url: "schools.php",
          type: "POST",
          data: { id : menuId },
          dataType: "html"
        });

        request.done(function( msg ) {
          $("#schools").html( msg ); 
        });
      });  
     });  
</script>
以及PHP代码:

<?php
include('../connection.php');


if(isset($_POST['id']) && $_POST['id'] != '')
  {
      $id = $_POST['id']; 
      $SQ = "SELECT c_name FROM courses WHERE fac_id = ?";
  $q = $conn->prepare($SQ) or die("ERROR: " . implode(":", $conn->errorInfo()));

    $q->bindParam(1, $id);
    $q->execute();
    $total = $q->fetchAll();

    $i=1;
     foreach ($total as $sch){
        echo "<option class = 'option' value = '$i'>". $sch[0].</option>";
        $i++;
      } 

}

?>
编辑:

这是HTML代码:

<form class="form-horizontal">
    <!-- Form Name -->

    <!-- Select Basic -->
    <div class="control-group">
      <label class="control-label" for="selectbasic">State where your school is located</label>
      <div class="controls">
        <select id="state" name="state" class="form-control input-xlarge">
        <?php 
            $i=1;
          $SQ = "SELECT * FROM states";
          $schools = $conn->prepare($SQ);
          $schools->execute();
          $total = $schools->fetchAll();
          foreach ($total as $sch){
            echo "<option class = 'option' value = '$i'>". $sch[1]. "</option>";
            $i++;
          }

          ?>

        </select>
      </div>
    </div>

    <!-- Select Basic -->
    <div class="control-group">
      <label class="control-label" for="selectbasic">School</label>
      <div class="controls">
        <select name="school" id = 'schools' class="form-control input-xlarge">
          <?php 
            $i=1;
          $SQ = "SELECT * FROM schools";
          $schools = $conn->prepare($SQ);
          $schools->execute();
          $total = $schools->fetchAll();
          foreach ($total as $sch){
            echo "<option class = 'option' value = '$i'>". $sch[1]. "</option>";
            $i++;
          }

          ?>
        </select>
      </div>
    </div>
</form>

在一些较旧版本的jQuery中,select从不一致地返回val。 您可以尝试看看这是否有效:

var menuId = $("option:selected",this).val();
而且,情况可能并非如此,但有时我发现这是可行的

data: { 'id' : menuId }, //note the quotes

在一些较旧版本的jQuery中,select从不一致地返回val。 您可以尝试看看这是否有效:

var menuId = $("option:selected",this).val();
而且,情况可能并非如此,但有时我发现这是可行的

data: { 'id' : menuId }, //note the quotes

我会尝试直接使用$.ajax,而不是将其设置为变量

$.ajax({
      url: "schools.php",
      type: "POST",
      data: { id : menuId },
      dataType: "html",
      success: function(data){
         append data stuff here.
      },
      error: function(xhr, status, error){
          console.log(error + " error from here");
      }
    });

使用error函数,如果返回任何错误,您可以打印出错误。它可能会帮助您调试问题。

我会尝试使用straight up$.ajax,而不是将其设置为变量

$.ajax({
      url: "schools.php",
      type: "POST",
      data: { id : menuId },
      dataType: "html",
      success: function(data){
         append data stuff here.
      },
      error: function(xhr, status, error){
          console.log(error + " error from here");
      }
    });

使用error函数,如果返回任何错误,您可以打印出错误。它可能会帮助您调试问题。

试试速记版本,看看是否有帮助

$.post('schools.php',{ 'id' : menuId },function(d){
   $("#schools").html( d );
});

试试速记版,看看是否有用

$.post('schools.php',{ 'id' : menuId },function(d){
   $("#schools").html( d );
});

哪个html元素具有此id状态?@Leonardo填写下拉列表list@RUJordan您可以发布显示此下拉列表的HTML代码吗?我希望下一个下拉列表依赖的第一个选择选项。您的PHP文件中有一个恶意双引号$sch[0]。;应为$sch[0]。;哪个html元素具有此id状态?@Leonardo填写下拉列表list@RUJordan您可以发布显示此下拉列表的HTML代码吗?我希望下一个下拉列表依赖的第一个选择选项。您的PHP文件中有一个恶意双引号$sch[0]。;应为$sch[0]。;我这样做了,但它没有报告任何错误。我甚至使用了警告“成功,它工作”;在success函数和it alert success中,它在networks选项卡中workd.check并检查来自php文件的响应。看看它是否返回了什么。只是这样做了,一切似乎都很好,但在Params选项卡下返回了正确的id。我这样做了,但它没有报告任何错误。我甚至使用了警告“成功,它工作”;在success函数和it alert success中,它在networks选项卡中workd.check并检查来自php文件的响应。看看它是否返回了什么。刚刚这么做,一切似乎都很好,但在参数选项卡下返回了正确的id。你能试试console.logmenuId;或alertmenuId;甚至在进行ajax调用以检查menuId是否被读取之前;或alertmenuId;甚至在进行ajax调用以检查menuId是否被读取之前。