你好,我得到了这个代码:
function copy(db) {
$j(db).each(function(index, db_name) {
$('#' + db_name + ' td.load').addClass("loader");
$j.post("/controler/make-backup", { db_name: db_name }, function(data) {
console.log(data);
});
//console.log(db);
});
这是php中数据库备份的示例代码。我已经使用json_encode到php的post-errors到json数组。
我想在jQuery中读取POST成功和错误事件,并使用带有图标的addClass(successs和error((通过css(。但我不知道该怎么做才好。
有人能帮我在这里面使用success和.error吗?
在@user972@Jay Blanchard的帮助下编辑我的实际工作代码。我调整了.完成和.失败回调:
function copy(db_names) {
$j(db_names).each(function (index, db_name) {
$j('#' + db_name + ' td.load').removeClass("error").removeClass("success").addClass("loader").attr({alt: '', title: ''});
$j.post("/controler/make-backup", {db_name: db_name}, function (data) {
})
.done(function (data) {
var result = $j.parseJSON(data);
if (typeof result.success != 'undefined') {
$j('#' + db_name + ' td.load').addClass("success").removeClass("loader").attr({alt: result.success, title: result.success});
} else if (typeof result.error != 'undefined') {
$j('#' + db_name + ' td.load').addClass("error").removeClass("loader").attr({alt: result.error, title: result.error});
} else {
$j('#' + db_name + ' td.load').addClass("error").removeClass("loader").attr("title", "error");
}
})
.fail(function (data) {
$j('#' + db_name + ' td.load').addClass("error").removeClass("loader").attr({alt: "other error", title: "other error"});
});
});
}
来自http://api.jquery.com/jquery.post/从jQuery 1.8开始,您应该使用.done()
、.fail()
和.always()
回调方法。它们很容易调用-
$j.post("/controler/make-backup", { db_name: db_name }, function(data) {
console.log(data); // first success
})
.done(function() {
console.log( "second success" );
})
.fail(function() {
console.log( "error" );
})
.always(function() {
console.log( "finished" );
});
这些回调方法中的每一个都可以包含根据需要添加或删除类的功能。
function copy(db) {
$j(db).each(function(index, db_name) {
$('#' + db_name + ' td.load').addClass("loader");
$j.post("/controler/make-backup", { db_name: db_name }, function(data,status) {
if(status=='success'){// a successful ajax call
if(data.status==TRUE){
// wrire your addClass effects here.
$('.classs').html(data.msg1);
}else{
// write your failure effects here
}
}
});
//console.log(db);
});
echo json_encode(array('status'=>true,'msg1'=>'message','msg2'=>'sdsssss'));
这是ajax php文件中的数组{"status":true,"msg1":"message","msg2":"sdsssss"}
这是来自ajax请求的响应
不确定这个问题,但你在寻找这样的东西吗?
var obj = $j('#' + db_name + ' td.load');
obj.removeClass().addClass("loader");
$j.post("/controler/make-backup", { db_name: db_name })
.done(function( data ) {
console.log( "Data Loaded: " + data );
obj.removeClass().addClass("success");
})
.fail(function() {
alert( "error" );
obj.removeClass().addClass("error");
});
您可以使用$.ajax({type:post,....})
而不是$.post()
。
参考:http://api.jquery.com/jQuery.ajax/
代码:
$.ajax({
url: "/controler/make-backup"",
type:"POST",
dataType:"json",
data:{ "db_name": db_name },
success:function(data) {
//process the response on successful response
},
error:function() {
//process the response on un-successful response
}
});