Ajax内容加载数据库值无法正常工作

时间:2013-10-08 08:17:36

标签: javascript php jquery html ajax

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

my_courses.php(ajax part)

$(':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;
 }  
}

?>

databaseconnect.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 . '`;');
        }
    }

输出:

初始加载

enter image description here

加载表单下拉菜单搜索

enter image description here

从下拉列表中选择值会返回警报

指示的正确值

enter image description here

内容加载后(在div mini_table上没有返回值)

enter image description here

2 个答案:

答案 0 :(得分:1)

other_functions.php中,您定义了函数ajax_request_val() 据我所知,在同一个文件中没有调用该函数,因此当您使用Ajax调用它时,您只需定义函数并且永远不会调用它。

答案 1 :(得分: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 }