0

我有一个表单提交的ajax调用;如果我在硬编码时传递我的 sql 参数,它工作正常,但是如果我想在我的模型中传递我的 sql 查询参数和输入(来自 View),它会显示:消息:未定义索引:startDate 和 endDate。

这是我的观点:

            <?PHP
                 $formData2 = array(
                    'class' => 'form-horizontal',
                     'id' => 'frm2',
                   );
                  echo form_open('gallery/fetchAssociates', $formData2);
            ?>
            <input id="startDate" class="span2" size="16" type="text"  />
            <input id="endDate" class="span2" size="16" type="text"  />                                 
            <input type="submit" class="btn btn-primary" 
             value="Submit" id="querystartEnd" name="querystartEnd" />                 
            <?PHP
            echo form_close();
            ?>

我用于 AJAX 调用的 javascript 如下:

       $.ajax({
            type: "POST",
            async: false,
            dataType: "json",
?>",
            url: "<?php echo base_url('gallery/fetchAssociates') ?>",

            success: function(data) {

                html = "<table id='myTable'><thead><tr id='test'><th>ID</th><th>Start Date</th><th> LName</th></tr></thead><tbody id='contentTable'>";

                for (var i = 0; i < data.length; i++)
                {
                    html = html + "<tr  id='trResponses' ><td><div >" + data[i]['id']
                                + " </div></td><td><div >" + data[i]['start'] + 
                                   "</div> </td><td><div >" + data[i]['username'] +
                                    "</div></td></tr>";
                  }
                  html = html + "</tbody></table>";
                  $("#resultFrm2").html(html);
               },
              error: function() 
               {
                   alert('error');
               }

             });

这是我的控制器:

    public function fetchAssociates() {

        //echo($_POST["startDate"]);
        //echo($_POST["endDate"]);
        //die();                       
        $this->load->model('user_model');
        echo json_encode($this->user_model->getAll());

    }

我的模型方法如下:

public function getAll() 
{
    $wtc = $this->load->database('wtc', TRUE);
    $sql = "SELECT username, MIN(timeIn) as start
             FROM tc_timecard
             GROUP BY userid  having  MIN(timeIn) > ? and MIN(timeIN) < ? 
             order by MiN(timeIN);";

     //$q = $wtc->query($sql, array('2013-01-08', '2013-01-23'));
     $q = $wtc->query($sql, array($this->input->post('startDate'),
      $this->input->post('endDate')));

     if ($q->num_rows() > 0) 
        {
            foreach ($q->result() as $row) 
            {
                $data[] = $row;
             }

             return $data;
         }
 }

正如你在我的代码中看到我的评论:如果我有

 //echo($_POST["startDate"]);
//echo($_POST["endDate"]);

在萤火虫中未注释的回应它说“消息:未定义的索引:开始日期和结束日期。” 如果我有,也在我的控制器中

//        $q = $wtc->query($sql, array('2013-01-08', '2013-01-23'));

未注释它可以工作,但是一旦我想通过以下代码行传递输入,它就不起作用:

$q = $wtc->query($sql, array($this->input->post('startDate'), $this->input->post('endDate')));

我无法访问控制器或模型中的输入的原因可能是什么?

如果您不清楚,请让我知道您需要更多澄清的部分。

已编辑:值得一提的是,我的 ajax 调用位于以下块内:

  $('#frm2').submit(function(e) 
     {
            e.preventDefault();
            //My AJAX call here
     });

提前谢谢了,

4

1 回答 1

1

您没有通过 ajax 传递任何数据

// Collect data from form which will be passed to controller
var data = {
 start_data : $('#startDate').val(),
 start_data : $('#endDate').val(),
}

$.ajax({
        type: "POST",
        async: false,
        dataType: "json",
        data : data // data here
        url: "<?php echo base_url('gallery/fetchAssociates') ?>",
        success : function(data){
         // Success code here
        },
        error: function(data){
         // error code here
        }
})
于 2013-10-25T15:31:59.283 回答