0

クライアント側にこのコードがあります:

this.formValidation = function() {
        // Parse forms
        $('.submit.btn').on('click', function(){
            $(this).closest('form').submit();
        });
        $.each($('form.validate'), function(){
            $(this).validate({
                submitHandler: function(form) {
                    var data = $(form).serializeArray();
                    var action = $(form).attr('action');
                    $.ajax({
                        method: 'post',
                        dataType: 'json',
                        url: action,
                        data: data,
                        success: function(d) {
                            // Prepare the message
                            var message = '';
                            $.each(d, function(k, m){
                                var messageType = 'boolean' === $.type(m.status) ? (m.status?'success':'error') : m.status;
                                message += '<div class="alert alert-'+messageType+'">'+m.message+'</div>';
                            });
                            // Replace the form with the message
                            $(form).replaceWith($(message));
                        },
                        error: function() {
                            var error = $('<div class="alert alert-error">error </div>');
                            $(form).replaceWith(error);
                        }
                    });
                }
            });
        });
    };

サポートされているメッセージ タイプは次のとおりです: css がスタイルをロードするための 'success' および 'error'

サーバー内のこのコード:

     $d= array(
 'status' => 'success',
 'm.status'=> 'success',
 'message'=>'success'
 );
    echo json_encode($d);
?>

しかし、成功メッセージは返されません。サーバー側で配列を形成するにはどうすればよいですか?

コードの成功セクションに入ることは知っていますが、サーバー側で変数を記述する方法がわかりません。

JavaScript コードは変更しないでください。サーバーの php を変更するだけです。これどうやってするの?

また、いくつか質問があります。

  1. サーバーphpの変数名は、関数内の変数名と同じにする必要がありますか? この例では、 $d をエコーするときに、次のようにする必要があり success: function(d) {ますか、それとも他の名前を使用できますか? それらは関連していますか?

  2. 変数 'k' と 'm'function(k, m){はいつ由来しますか? 関数が何をするのか説明できますか?

4

2 に答える 2

0

解決した、

json に応答するには、多次元配列を使用する必要がありました。

サーバー側の正しいコードは次のとおりです。

  $d=array(
    array(
    'status'=>'success',
    'message'=>'mail sent'
    ),
    array(
    'status'=>'info',
    'message'=>'thank you!'
    )

   );
 //Set JSON header
 //warning : UTF-8 byte order causes the Cannot modify header information error !!!!
  header('Content-type: application/json');
    echo json_encode($d);
于 2013-08-14T09:19:29.827 に答える