我有一个$.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中是获得所需数据的最干净、最简单的方法。别做无谓的重复工作了,以后会更容易做的。