【发布时间】:2017-07-26 04:50:51
【问题描述】:
使用 Ajax jQuery 函数 $.post(),我将 jQuery serialized() 表单数据发送到 PHP 函数,该函数在 $_POST[] 中成功接收它,但单个 $_POST['form_field'] 变量为空。
在我的PHP函数中,print_r($_POST)成功显示表单数据:
Array ( [action] => send_message [data] => modal_name=olivier&modal_email=olivier%40hotmail.com&modal_message=Hello+world )
然而$_POST['modal_name']、$_POST['modal_email'] 和$_POST['modal_message']
是空的。为什么?
HTML:
<form id='contact'>
<input type='text' name='modal_name' id='modal_name' />
<input type='email' name='modal_email' id='modal_email' />
<textarea name='modal_message' id='modal_message'></textarea>
</form>
JS:
$('#contact').on('submit', function(e) {
e.preventDefault();
if (modal_name && modal_email && modal_message) {
var data = {
action: 'send_message',
data: $(this).serialize()
};
$.post(WPaAjax.ajaxurl, data, function(response) {
$('.modal').append(response);
});
}
});
【问题讨论】:
-
正如您在
$_POST中看到的,您的data密钥包含一个序列化字符串。因此,您可以对其进行解析或不序列化两次并直接发送序列化表单:var data = $(this).serialize();