【发布时间】:2015-05-31 21:23:43
【问题描述】:
我目前正在尝试使用 AJAX 和 jQuery 来完成一些基本任务,而无需离开网页。我的目标是查询数据库上的表并将该信息附加到列表中而不刷新页面。
<button class="button radius" id="btnList">Current Items</button>
这是我的具有 ID 的按钮。 ("触发按钮");
我的脚本是这样的
$('#btnList').click(function(e){
$.ajax({
url:"<?php echo base_url();?>/cashbook/get_item",
datatype:'json',
type:"POST",
success: function(result){
alert(result);
$.each(result.results,function(item){
$('ul').append('<li>' + item + '</li>')
})
}
})
$('#div_list').toggle(900)
})
我的目标是当按钮被点击时,它会触发并发挥它的魔力并返回数据并将其附加到一个列表中,完成后会打开一个包含该列表的 Div。问题是我收到一个错误 “TypeError: undefined is not an object (evalating 'a.length')” 我的控制器
function get_item()
{
$data = $this -> M_cashbook -> cashbook_items();
echo json_encode($data);
}
我不确定我在控制器中所做的是否正确,但是当它设置为 echo 或 print 时,它会返回 jSon 字符串并在警报中标记,但如果更改,也会作为文本显示在我的屏幕顶部返回 json_encode 警报显示空白,没有 Json 没有任何作用。
我做错了吗?如果,那么实现我想做的事情的正确方法是什么。
谢谢
更新:
function cashbook_items()
{
$this -> db -> select('name');
$this -> db -> from('items');
$query = $this -> db ->get();
return $query -> result();
}
这是我的模特
这是我的两个控制器功能,第一个是页面的默认加载,它调用第二个来获取内容,第二个只是做繁重的工作来调用数据库并返回数据
function items()
{
$data['items'] = $this ->get_item();
$this->load->view('/holders/header');
$this->load->view('/cash/v_cashbook_items_page',$data);
$this->load->view('/holders/footer');
}
function get_item()
{
$data = $this -> M_cashbook -> cashbook_items();
echo json_encode($data);
}
最后是视图
<style>
ul {
list-style-type: none;
}
</style>
<div align="center" style="padding-top: 1%" id="div_main">
<div class="jumbotron">
<h1>Cashbook Items</h1>
<p>Add items to to cashbook so they used <br>when adding incomings and out goings later</p>
<form id="items_form" data-abide>
<div class="large-3 large-centered columns">
<label>New Item Name
<input type="text" required name="item" id="item_name">
</label>
<small class="error">No item added</small>
</div>
<button class="button radius" id="btnItem">Submit</button>
</form>
<a href="#" data-reveal-id="firstModal" class="radius button" id="btnList">Item List</a>
</div>
</div>
<div class="row">
<div id="firstModal" class="reveal-modal" data-reveal align="center">
<h3>Current Items</h3>
<p>Reccuring Items in the database</p>
<ul id="list_item">
</ul>
</div>
</div>
</div>
<br>
<script>
$('#btnList').click(function (e) {
$.ajax({
url: "<?php echo base_url();?>/cashbook/get_item",
dataType: 'text',
type: "POST",
success: function (result) {
var obj = $.parseJSON(result);
$.each(obj, function (index, object) {
$('#list_item').append('<li>' + object['name'] + '</li>');
})
}
})
})
$('#items_form').submit(function (e) {
e.preventDefault();
var data = $('#item_name').val();
alert(data);
$.ajax({
url: "<?php echo base_url();?>/cashbook/new_item",
type: 'POST',
data: "item=" + data,
success: function () {
alert('THIS WORKED');
},
error: function () {
alert('Nah died');
}
});
})
</script>
【问题讨论】:
-
这不是我对 URL 所做的吗? /cashbook/get_item cashbook 是控制器,get_item 是cashbook 内的函数?
-
你能告诉我们你的模型吗?
-
datatype:'json'应该是dataType:'json'。注意大写的“T”。 -
删除了我的评论。误读代码
标签: php jquery mysql codeigniter