经过大量编码后,我觉得我终于围绕AJAX,JSON和CI在一定程度上围绕我的脑袋。CI_model无法正确捕获POST JSON数据
但是,我觉得我已经击中了一个最后的障碍。下面是我的代码:
HTML
<div id="structures">
<h1>Build</h1>
<form name="buildForm" id="buildForm" method="POST" action="<?php echo base_url(); ?>/ajax/index/">
<select name="buildID" class="buildClass">
<option value="0" selected="selected" data-skip="1">Build a Structure</option>
<?php foreach ($structures as $structure_info): ?>
<option name='<?php echo $structure_info['str_name'] ?>' value='<?php echo $structure_info['str_id'] ?>' data-icon='<?php echo $structure_info['str_imageloc'] ?>' data-html-text='<?php echo $structure_info['str_name'] ?><i>
<?php echo $structure_info['timebuildmins'] ?> minutes<br><?php echo $structure_info['buy_gold'] ?> gold</i>'><?php echo $structure_info['str_name'] ?></option>
<?php endforeach ?>
</select>
<div id="buildSubmit">
<input id ="btnSubmit" class="button" type="submit" value="Submit"/>
</div>
</form>
</div>
在这里,我只是我的建筑形式。
AJAX/JS
$(function(){
$("#buildForm").click(function(e, buildID){
e.preventDefault();
var frm = $(document.buildForm);
var dat = JSON.stringify(frm.serializeArray());
alert("I am about to POST this:\n\n" + dat);
$.post(
frm.attr("action"),
dat,
function(response)
{
alert(response);
}
);
});
});
型号功能
我创建了一个新的控制器类扩展 “阿贾克斯” 和功能 “指数” 这一简单的调用我的模型“insert_build。 “我的解决方法是将.js文件从页面中取出并保存在页眉中。
无论如何。当我点击提交按钮时,它会成功警告JSON输出。虽然它传递给控制器 - >模型后,它似乎没有捕捉到任何地方。我假设我做错了,但无法弄清楚什么。
感谢您的帮助。
不知道,如果它只是你如何粘贴成左右,但“这 - $>输入 - >后(DAT)”应为“$这个 - >输入 - >后('dat')“ – Tjkoopa 2012-03-06 23:16:14
一个小提示,可能会在未来帮助你。给console.log一个尝试,而不是警报。它只是让事情更优雅;)。 – 2012-03-07 07:46:20