1

私のPHPクラスには、メッセージを処理してJQueryに送り返す次のメソッドがあります。送り返すメッセージが 1 つしかない場合は正常に機能しますが、複数ある場合は、それらを個別の 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);
    }
    ...
}

これを変更する方法がわからないため、複数のエラー メッセージが 1 つの json エンコード メッセージに入れられますが、それが 1 つのメッセージの場合でも機能します。

手伝ってくれますか?ありがとう

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 に答える