用于JQuery的PHP json_encode错误消息

时间:2012-06-04 13:06:53

标签: php json

我的PHP类中有以下方法处理消息并将其发送回JQuery。如果只有一条消息要发送回来,它可以正常工作,但是如果有多条消息,它会将它们作为单独的json对象发回。消息被发回确定但JQuery给了我一个错误。消息如下所示:

{"error":true,"msg":"Message 1 here..."}{"error":true,"msg":"Message 2 here"}

我的PHP方法如下所示:

private function responseMessage($bool, $msg) {
    $return['error'] = $bool;
    $return['msg'] = $msg;
    if (isset($_POST['plAjax']) && $_POST['plAjax'] == true) {
        echo json_encode($return);
    }
    ...
}

我不知道如何更改此内容,因此将多个错误消息放入单个json编码的消息中,但如果它只是一条消息也可以工作。

你能帮忙吗? 感谢

3 个答案:

答案 0 :(得分:2)

看起来您需要附加到数组上,然后在添加所有消息后输出JSON。目前,您的函数在调用时会输出JSON:

// Array property to hold all messages
private $messages = array();

// Call $this->addMessage() to add a new messages
private function addMessage($bool, $msg) {
   // Append a new message onto the array
   $this->messages[] = array(
     'error' => $bool,
     'msg' => $msg
   );
}
// Finally, output the responseMessage() to dump out the complete JSON.
private function responseMessage() {
    if (isset($_POST['plAjax']) && $_POST['plAjax'] == true) {
        echo json_encode($this->messages);
    }
    ...
}

输出JSON将是一个类似于:

的对象数组
 [{"error":true,"msg":"Message 1 here..."},{"error":true,"msg":"Message 2 here"}]

答案 1 :(得分:0)

您可以将错误作为数组发送。

$errors = Array();
// some code
$errors[] = ...; // create an error instead of directly outputting it
// more code
echo json_encode($errors);

这将导致类似:

[{"error":true,"msg":"Message 1 here..."},{"error":true,"msg":"Message 2 here"}]

答案 2 :(得分:0)

听起来像设计问题。你需要建立一个像$ response = array();然后每次需要添加错误时才添加它。 $ response [] = $ errorData;然后当你完成json_encode($ response);