分别处理对$post success的不同ajax响应


Process separately different ajax responses to $post success

我有一个$.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?有空字段",然后整个响应一起,同时(我想在其创建的时刻捕获每个消息)作为单个字符串:"计数器?7aviso?有空字段

我应该如何从checkMsg.php发送消息,使jQuery实时知道它们?和separate:要实时处理的单个消息。

以下是checkMsg.php相关代码,echo发送此信息:

$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.";
        }
    }

我认为您正在做大量工作来解析JSON端上的数据,而PHP可以为您简化此操作。下面是对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中是获得所需数据的最干净、最简单的方法。别做无谓的重复工作了,以后会更容易做的。