我的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编码的消息中,但如果它只是一条消息也可以工作。
你能帮忙吗? 感谢答案 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);