0

我想根据选择的下拉值通过 ajax onchange 事件填充我的 div minimum_table。这<div class="minimal_table">是我每次从下拉表单中选择值时要更新的页面区域。但是,在我的内容加载后,它不会从我的数据库中返回任何值。我已经使用警报检查了在我的 javascript 中传递的值,但它返回了正确的值。other_function.php if(isset($val_id))我还注意到,即使我已经在下拉列表中选择了一个值,它似乎也不会在该行中返回 true 。有人可以帮我指出我的代码有什么问题以及我缺少什么吗?非常感谢。这是我的代码:

my_courses.php(ajax 部分)

$(':input').change(function(event){
    event.preventDefault();
        $('.minimal_table').html('<img src="../images/loading_trans.gif"  style="position:relative; margin:350px; margin-top:250px;" />');
        alert($(this).val());

       var val_id = $(this).val();
       var postData = {'val_id':val_id};

$.ajax({
  url: "../includes/other_functions.php",
  async: false,
  type: "POST",
  data: postData,
  dataType: "html",
  success: function(data){
    setTimeout(function(){
    $('.minimal_table').html(data);
    },2000);
     console.log(data);
  },
});

}); 

other_functions.php

<?php 
 function ajax_request_val(){

$val_id = $_POST['val_id'];
$field = "course_type";

if(isset($val_id)){

  $plans = db::getTable('plan',$field,$val_id);
            foreach ($plans as $plan) {
                if (eventAccessLevel(null, $plan['plan_id']) != EVENT_ACCESS_NONE) {
                    $course_array[] = getCourseDetails(null, $plan['plan_id']);
                    $pid_shown[] = $plan['plan_id'];
                }
            }
            $events = db::getTable('tbl_event',$field,$val_id);
            foreach ($events as $event) {
                if (!in_array($event['plan_id'], $pid_shown)) {
                    $event_id = $event['event_id'];
                    if (eventAccessLevel($event_id, null) != EVENT_ACCESS_NONE) {
                        $course_array[] = getCourseDetails($event_id, null);
                    }
                }
            }

            return $course_array;
}

else{

            $plans = db::getTable('plan');
            foreach ($plans as $plan) {
                if (eventAccessLevel(null, $plan['plan_id']) != EVENT_ACCESS_NONE) {
                    $course_array[] = getCourseDetails(null, $plan['plan_id']);
                    $pid_shown[] = $plan['plan_id'];
                }
            }
            $events = db::getTable('tbl_event');
            foreach ($events as $event) {
                if (!in_array($event['plan_id'], $pid_shown)) {
                    $event_id = $event['event_id'];
                    if (eventAccessLevel($event_id, null) != EVENT_ACCESS_NONE) {
                        $course_array[] = getCourseDetails($event_id, null);
                    }
                }
            }

            return $course_array;
 }  
}

?>

数据库连接.php

public static function getTable($tableName,$field='',$type_id='') {
        if (!self::$db) self::connect();

        if(!empty($type_id)){
            $tableName = self::$db->escape_string($tableName);
            return self::getObjects('SELECT * FROM `' . $tableName . '` WHERE `'. $field .'` = `'. $type_id .'`;');
        }
        else{
            $tableName = self::$db->escape_string($tableName);
            return self::getObjects('SELECT * FROM `' . $tableName . '`;');
        }
    }

输出:

初始负载

在此处输入图像描述

加载表单下拉菜单搜索

在此处输入图像描述

从下拉列表中选择值返回由警报指示的正确值

在此处输入图像描述

内容加载后(在 div mini_table 上不返回任何值)

在此处输入图像描述

4

2 回答 2

1

您对 other_functions.php 进行了 ajax 调用,但该文件仅包含一个从未调用过的函数。

有很多方法可以解决这个问题并稍微整理一下,但要快速解决问题,您可以尝试将其放在 other_functions.php 的顶部:

if(isset($_POST['ajax'])){ echo ajax_request_val(); }

然后按如下方式更改您的ajax调用中的数据

var postData = {val_id:val_id, ajax:1 }
于 2013-10-08T08:45:03.173 回答
1

other_functions.php你定义的功能ajax_request_val()
据我所知,在同一个文件中没有对该函数的调用,因此当您使用 Ajax 调用它时,您只需定义该函数而从不调用它。

于 2013-10-08T08:37:32.980 回答