将几个变量带回ajax形成POST成功作为jQuery变量

时间:2016-04-06 13:52:00

标签: php jquery json ajax

我对ajax很新。

我在这里要做的是从PHP文件中带回一些变量,我写的主要是为了将HTML表单数据处理成MySql db表。

经过一些研究后我得出结论,我需要使用json(第一次),我必须将部分dataType:'json'添加到我的ajax中。

我的问题是,在添加此部分后,我无法再提交表单了!

任何人都可以让我知道我在这里做错了什么吗? 我只需要处理PHP代码并将三个提到的变量返回到jquery变量中,这样我就可以用它们做一些事情。

提前谢谢。

AJAX:

var form = $('#contact-form');


var formMessages = $('#form-messages');


form.submit(function(event) {

        event.preventDefault();

        var formData = form.serialize();

        $.ajax({
            type:     'POST',
            url:      form.attr('action'),
            data:     formData,
            dataType: 'json', //after adding this part, can't anymore submit the form
            success:  function(data){

               var message_status = data.message_status;
               var duplicate      = data.duplicate;
               var number         = data.ref_number;
               //Do other stuff here
               alert(number+duplicate+number);

           }
        })
});

PHP:

//other code here

$arr = array(
  'message_status'=>$message_status,
  'duplicate'=>$duplicate,
  'ref_number'=>$ref_number
);
echo json_encode($arr);

2 个答案:

答案 0 :(得分:0)

您指定表单方法的方式不正确。 变化

 type:     'POST',

 method:     'POST',

试一试。你能记录你的回复并在这里发布吗?另外,检查控制台是否有任何错误。

答案 1 :(得分:0)

如果您的dataType是json,则必须发送Json对象。但是,form.serialize()为您提供Url编码数据。 (&符分离)。

您必须将数据准备为json对象:

以下是您可以添加的扩展功能:

$.fn.serializeObject = function()
{
   var o = {};
   var a = this.serializeArray();
   $.each(a, function() {
       if (o[this.name]) {
           if (!o[this.name].push) {
               o[this.name] = [o[this.name]];
           }
           o[this.name].push(this.value || '');
       } else {
           o[this.name] = this.value || '';
       }
   });
   return o;
};

信用证转到:Difference between serialize and serializeObject jquery