无法从Ajax get请求中获取数据

时间:2012-03-04 18:31:30

标签: php javascript ajax codeigniter

现在玩这个太久了!

我正在使用codeigniter。

我试图从Ajax get请求中获取一些数据。我只想检查MySQL数据库,检查是否有一些数据计算给定日期。一个简单的真或假对于回归是好的。

这是我的请求,然后是PHP。 PHP确实会将正确的结果返回到$ data中,但是当它返回到Ajax请求时,会调用alert(data)并显示为空白......没有任何内容。

任何想法我做错了什么?

由于

function get_appointment_data(request_date){

    $.ajax({
    url: 'http://localhost/doctor_today/booking/retrieve_cal_data',
    type: 'GET',
    data: request_date,
    success: function(data){
                alert(data);
    }
    });
}




function retrieve_cal_data() {

    $this->load->model('Booking_model');

    $date = $this->input->get('date');      
    $data = $this->Booking_model->get_calendar_data($date);

    return $data==null;
}

2 个答案:

答案 0 :(得分:2)

我不熟悉codeigniter但你必须输出函数的结果。 'return'的实例必须使用'echo'将结果返回给ajax请求。

答案 1 :(得分:0)

您必须回显结果,否则您的ajax将不会收到结果,并且成功处理程序将不会执行。这是我将要用于这种情况,我正在使用更简单的.post函数来完成该任务,只有一个关键区别 - 我在其末尾指定'json',这意味着我将获得一个json对象作为来自我的.post的结果(您可以在Google上搜索此内容)。接下来的关键是使用PHP的json_encode函数将我想要的结果编码为json格式并回显其结果。我们不需要通过正常的'return'语句返回结果。所以......

剧本:

        var url = 'http://example.com/ajax_function';
        var data = null;

        $.post(url, data, function(data) {

            if(data.ok)
                alert('Everything is fine!');
            else
                alert('Ops!');

        }, 'json');

服务器端:

   function retrieve_cal_data() {

     $this->load->model('Booking_model');

     $date = $this->input->get('date');      
     $data = $this->Booking_model->get_calendar_data($date);

     echo json_encode(array('OK' => $data==null));
  }

如果直接调用PHP函数,它应输出类似

的内容
  { "OK": "true" }

稍后将转换为javascript数组

  data[OK] = true;

您可以随意使用。

干杯, 斯坦。

P.S。我没有测试过代码,但它应该可以正常工作。