1

我的 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 编码消息中,但如果它只是单个消息也可以工作。

你能帮我吗?谢谢

4

3 回答 3

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"}]
于 2012-06-04T13:10:13.923 回答
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"}]
于 2012-06-04T13:09:16.393 回答
0

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

于 2012-06-04T13:10:56.737 回答