2012-06-04 2 views
1

메시지를 처리하고 다시 JQuery로 보내는 PHP 클래스에 다음 메소드가 있습니다. 다시 보낼 단일 메시지 만있는 경우 제대로 작동하지만 둘 이상인 경우 별도의 json 개체로 다시 보냅니다. 메시지는 다시 전송되지만 JQuery는 오류를 표시합니다. 메시지는 다음과 같습니다 :이 때문에 여러 오류 메시지가 하나의 JSON 인코딩 된 메시지뿐만 아니라에 넣고 변경하는 방법을 모르는JQuery에 대한 PHP json_encode 오류 메시지

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

:

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

내 PHP 방법은 다음과 같습니다 그것이 단 하나의 메시지 일 경우에 작동합니다.

도와 주시겠습니까? 감사합니다.

답변

2

보인다.

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

감사합니다. 나는 이것을 시도하고 볼 수 있습니다. – user1002039

+0

하나의 메시지 만있는 경우에도 json 객체 주위에 항상 대괄호를 가져 오는 것이 일반적입니까? – user1002039

+0

@ user1002039 배열을 만들었으므로 그렇습니다. 이 JSON을받는 자바 스크립트 코드에서 첫 번째 배열 요소에 액세스해야합니다. –

0

오류를 배열로 보낼 수 있습니다.

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

이 같은 발생합니다 : 당신은 모든 메시지 출력을의 JSON을 추가 한 경우 다음 배열에 추가 할 필요가 같은

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

가 설계 문제 같은데 :

// 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는 유사한 오브젝트의 배열 될 것이다 : 현재, 함수가 호출 될 때마다 JSON 출력한다. $ response = array();와 같은 객체를 만들어야한다. 오류가 추가 될 때마다 추가해야합니다. $ response [] = $ errorData; ur가 단지 json_encode ($ response)를 마쳤을 때;