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);
                        }
                    });
                }
            });
        });
    };

支持的消息类型是:'success' 和 'error' 用于 css 加载样式

和服务器中的这段代码:

     $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

开始一个longest mile(不知道它是否叫它,但它一直困扰着我)女巫是你console.log('something');从应该看到一些东西的地方做一个并在执行过程中逐渐向后移动直到你看到一些东西,这是一个很好的隔离问题的简单方法。

此外,如果您使用Google Chrome的开发工具有一个不错的网络选项卡,您可以看到 ajax 请求及其返回的内容。也许它返回了错误 500?

这样您就可以轻松诊断任何 ajax 调用。

至于你的问题:

  1. 不,jQuery 参数所做的只是为结果命名变量。所以你可以给它起任何名字,我通常resp个人使用。

  2. 每个中的参数指的是“键”和“值”(在这种情况下,它使用 m,就像上面一样)。阅读此处了解更多信息。

于 2013-08-13T19:30:08.063 回答
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 回答