单独处理不同的ajax响应$ post成功

时间:2015-05-14 16:09:13

标签: php jquery ajax

我有一个$.post函数,将数据发送到处理许多信息的文件,该文件可以在同一个调用中返回不同的消息。我正在尝试处理这些消息,识别它们并执行每个人要做的任何动作:

$.post('../actions/checkMsg.php',{ca_id:idCampaign}).success(
            function(checkData){
                aviso=0;
                if (checkData.indexOf("counter") >= 0){
                    var value = checkData.substr(checkData.indexOf("?") + 1);
                    $('.totalRegistros span').html(value);
                    progress.update(n=1);
                }
                else if (checkData.indexOf("aviso") >= 0){
                    var value = checkData.substr(checkData.indexOf("?") + 1);
                    aviso++;
                    $('.totalAvisos span').html(aviso);
                }
            });
}

checkMsg.php文件可以回显“counter?12”等消息,以便value 12转为$('.totalRegistros span').html(value);

但是,它还可以回应像“aviso这样的东西?有空字段”,然后整个响应同时发生(我想抓住每条消息)在它创建的那一刻)作为单个字符串:“counter?7aviso?有空字段”

我应该如何从checkMsg.php发送消息,让jQuery实时了解它们?并单独:实时处理个别消息。

这是checkMsg.php相关代码,其中包含发送此信息的回音:

$countMsg = mysqli_query($con,"SELECT * FROM ws_campmsg WHERE cm_fk_ca_id='$ca_id'");
    $totalRegistros=mysqli_num_rows($countMsg);
    echo "counter?".$totalRegistros;

    //INSPECCIÓN DE VARIABLES
    $vars1=0; $vars2=0; $vars3=0; $hasVar1=0; $hasVar2=0; $hasVar3=0;
    while($registroMsgs = mysqli_fetch_array($countMsg)){
        if ($registroMsgs['cm_var1']!==""){            
            $vars1++;
            $hasVar1=1;
        }        
        if ($registroMsgs['cm_var2']!==""){
            $vars2++;
            $hasVar2=1;
        }
        if ($registroMsgs['cm_var3']!==""){                
            $vars3++;
            $hasVar3=1;
        }
    }   

    if ($hasVar1==1 && $hasVar2==1 && $vars1 != $vars2){

        if(($hasVar3==1) && ($vars3 != $vars2 || $vars3 != $vars1)){            
            echo "aviso?Algunos de los ".$totalRegistros." no tienen variables asignadas: Hay ".$vars1." variables de tipo 1 asignadas, ".$vars2." variables de tipo 2 asignadas y ".$vars3." variables de tipo 3 asignadas.";
        }        
        else{            
            echo "aviso?Algunos de los ".$totalRegistros." no tienen variables asignadas: Hay ".$vars1." variables de tipo 1 asignadas, y ".$vars2." variables de tipo 2 asignadas.";
        }
    }

1 个答案:

答案 0 :(得分:1)

我认为,当PHP可以为您简化时,您正在做很多工作来解析JSON端的数据。这是对PHP的简单更改

$data = array();
$data['success'] = false;
$data['aviso'] = array('Your message here', 'Another Message', 'One more message');
echo json_encode($data);

然后在你的jQuery函数中。请注意,checkData将被识别为JSON,然后自动解析

function(checkData) {
    if(checkData.success) {
        //Successful AJAX call
    } else {
        $(checkData.aviso).each(function(index, msg) { alert(msg); });
    }
}

将您的回复放入JSON是获取所需数据的最简洁,最简单的方法。不要重新发明轮子,将来更容易开展工作