我有一个$.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.";
}
}
答案 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是获取所需数据的最简洁,最简单的方法。不要重新发明轮子,将来更容易开展工作