我对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);
答案 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