Jquery post success and error assign class with backround im


Jquery post success and error assign class with backround image

你好,我得到了这个代码:

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
          }
});