我有一个表单提交的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
});
非常感谢,
答案 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
}
})