2015-01-15 2 views
1

У меня есть проблема с JSON, У меня есть функция, которая послать JSon массивОшибка отправки нескольких сообщений JSON

public function repondMessage($etat=true,$message) 
{ 
    $msg = array($etat,$message); 
    return '{"msg":'.json_encode($msg).'}'; 
} 

и я получаю массив JSON правильно, когда только одна ошибка послал

, как это один:

if(a=1) 
{ 
echo respondeMessage(false,'Error'); 
} 

и JQuery:

console.log(data); 
    var resp = jQuery.parseJSON(data); 
    console.log(resp); 

я получить результат, который отлично подходит для меня:

{"msg":[false,"Error"]} 

но когда я получаю два сообщения в то же самое время, когда я делаю тест как то

if(a=1) 
{ 
echo respondeMessage(false,'Error'); 
} 

if(b=1) 
{ 
echo respondeMessage(false,'Error2'); 
} 

это то, что произошло: (Я не могу разобрать два Json)

{"msg":[false,"Error"]}{"msg":[false,"Error2"]} 

    Uncaught SyntaxError: Unexpected token { 
+0

вы не можете отправить несколько ответов, как, что, вместо того, чтобы добавить к и Свои замечания массив и отправьте их сразу – Steve

ответ

0

в соответствии с моим комментарием, вы не можете отправить несколько ответов, вместо того, чтобы добавить ответы и массив и отправить их все сразу

public function respondMessage($message) 
{ 
    $msg = array('msg'=>$message); 
    //Always send the correct header 
    header('Content-Type: application/json'); 
    echo json_encode($msg); 
    //and stop execution after sending the response - any further output is invalid 
    die(); 
} 
$errors=[]; 
if($a=1) 
{ 
    $errors[]=[false=>'Error']; 
} 

if($b=1) 
{ 
    $errors[]=[false=>'Error2']; 
} 

if(!empty($errors){ 
    respondMessage($errors); 
} 
+0

Спасибо, сейчас он работает довольно круто (y)! – Scorpion

0

Вызывая ответную функцию, вы отвечаете несколько раз. От вашего кода, я считаю, что намерение состоит в том, чтобы ответить следующим образом:

{"msg":[false, "Error", "Error2"]} 

Если это так, то моя рекомендация будет следующая структура в вашем контексте вызывающем предоставить эти результаты:

$errors = []; 
if($a=1){ 
    $errors[] = 'Error'; 
} 

if($b=1){ 
    $errors[] = 'Error2'; 
} 
if(count($errors)){ 
    respondMessage(true, $errors); 
} 
Смежные вопросы