Jquery:根据$ .post()的返回做不同的事情

时间:2012-07-18 08:08:06

标签: jquery

我有这个代码来添加用户:

$.post('ajax/aj_adduser.php', $("form#adduserform").serialize(), function(result) {
disablePopup();             $('#addsuccess').delay(200).fadeToggle('slow').delay(2000).fadeToggle('slow');  
$('div.mainadmin').html(result);            
});

几乎可以正常工作:-) 问题是,该行:

$('#addsuccess').delay(200).fadeToggle('slow').delay(2000).fadeToggle('slow');  

只应在添加用户时执行,因此如果结果集包含此用户已存在的消息则不会执行。

我该如何解决这个问题?我首先尝试在POST成功与否时执行,但它总是成功,它只是结果,结果集是不同的。

所有帮助表示赞赏!

3 个答案:

答案 0 :(得分:0)

JQuery的AJAX函数会将数据从AJAX调用返回到您尝试调用该行的函数。您可以访问函数中result获得的结果集。

这意味着您可以检查返回的数据并使用它有条件地执行操作。

答案 1 :(得分:0)

你应该确保ajax / aj_adduser.php中的php文件返回一个状态参数。

类似的东西:

if ($useradded){
   $rt->status = "useradded";
   $rt->result = $result;
}else{
   $rt->status = "failed";
}
echo json_encode($rt);

您可以将$ .post调用更改为$ .getJSON,并检查结果如下:

$.getJSON('ajax/aj_adduser.php', $("form#adduserform").serialize(), function(result) {
    if (result.status = "useradded"){
        // do something
        $('div.mainadmin').html(result.result); 
    }else{
       // don't do anything
    }
}

答案 2 :(得分:0)

$.post('ajax/aj_adduser.php', $("form#adduserform").serialize(), function(result) {
    disablePopup();   
    if(result.YourMessage == ...){
        $('#addsuccess').delay(200).fadeToggle('slow').delay(2000).fadeToggle('slow');     
    }  
    else{ ... }        
    $('div.mainadmin').html(result);            
});