php - JQuery AJAX POST 没有将数据发送到 PHP 文件

标签 php jquery mysql ajax

我今天一整天都在试图弄清楚问题出在哪里,我在这里阅读了很多类似的问题,但这似乎是一个特殊的问题。

我想要一个 AJAX 调用来填充一个基于之前从 MySQL 数据库中选择的下拉列表,但是它不起作用,因为 POST 没有向 PHP $id = $_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>

最佳答案

我会尝试直接使用 $.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");
      }
    });

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

关于php - JQuery AJAX POST 没有将数据发送到 PHP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20078072/

相关文章:

php - 在服务器上上传3张图片,并将路径保存在数据库中

php - 遍历 $_POST 变量

javascript - 突出显示/设置文本区域格式

mysql - where_in 和 find_in_set 之间的区别

javascript - 以安全的方式使用 ajax 传递 ID 值

php - 发送收到的订单 woocommerce 给经销商发送电子邮件通知

javascript - 如果用户执行点击,如何取消超时

javascript - 如何在angularjs中转换为多维数组

php - 从MySQL中的行填充下拉选择菜单

php - 内存缓存限制(MySQL 和 PHP)