我一直在使用ajax一周以下,现在尝试将它与codeigniter一起使用来创建一个相当复杂的ajax菜单系统。用户可以在菜单系统上添加新的部分。我有ajax代码发布到数据库,并成功将其添加到菜单系统。我遇到的问题是代码在更新数据库之前运行。因此,在进行添加之前,我只需获取最新菜单的副本,而不是获取新的菜单部分。如果我等一下,用我用ajax调用附加的按钮手动拨打电话,而不是使用.done,这样可以正常工作。
这是我的ajax电话
// this is attached to my form to add a menu section
$(function(){
$('#add_category_form').submit(function(evnt){
evnt.preventDefault();
var posting = $.post(base_url+"/menu/add_category", $("#add_category_form").serialize());
posting.done(newCategory());
});
//calls view to generate menu section
function newCategory(){
$.ajax({
'url' : base_url + '/' + controller + '/new_category',
'type' : 'POST', //
'success' : function(data){
var container = $('#testcontainer');
if(data){
container.html(data);
}
}
});
}
// view
<?php
$count = count($menu)+1;
$counter=0;
foreach ($menu as $category) {
$counter++;
if ($count == $counter) {
echo "menu html goes here of last menu created";
}
}
?>
答案 0 :(得分:0)
如果你想使用ajax延迟方法,你会做这样的事情。
(function($){
$('#add_category_form').submit(function( event ){
event.preventDefault();
var _data = this.serialize();
doSomething( _data ).then(
function( response ){}, // Success
function( error, code){} // Error
);
});
var doSomething = function( data ){
return $.ajax({
url : base_url + "/menu/add_category",
data : data,
type : 'POST',
dataType : 'html'
}).promise();
};
}(jQuery));