无法在控制器或模型中获取ajax调用提交表单的输入

时间:2013-10-25 15:15:30

标签: php ajax codeigniter

我有一个表单提交的ajax调用;如果我在硬编码时传递我的sql参数,它工作正常,但是如果我想在我的模型中传递带有输入(来自View)的sql查询参数,它会说:消息:未定义的索引: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());

    }

我的Model方法如下:

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"]);

在firebug中没有注释,它回复说:“消息:未定义的索引:startDate和endDate。” 如果我有

,也在我的控制器中
//        $q = $wtc->query($sql, array('2013-01-08', '2013-01-23'));

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

$ q = $ wtc-&gt;查询($ sql,数组($ this-&gt; input-&gt; post('startDate'),$ this-&gt; input-&gt; post('endDate')) );

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

如果您不清楚,请告诉我您需要进一步澄清的部分。

EDITED: 值得一提的是,我的ajax调用位于以下块中:

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

非常感谢,

1 个答案:

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