我有一个表单HTML如下:
<div id="error_message"></div>
<form action="daterequest.php" id="daterequest_form" method="post">
<select name="option1">
<option value="1">1</option>
<option value="0">0</option>
<option value="2">2</option>
</select>
<input type="text" name="option2" >
</form>
我有像这样的JS脚本
$(document).ready(function(){
$('#button_submit_form').on('click', function () {
var data = $('#daterequest_form').serializeArray();
alert(data);
$.ajax({
url: 'daterequest.php',
type: 'POST',
data: data,
success: function(response)
{
if (response == 'empty') {
$('#error_message').text('ERROR MESSAFGE') }
else {
$('#error_message').html(response);
$('#daterequest_form').fadeOut('400');
};
}
});
e.preventDefault();
});
});
我的alert(data);
只给了我[object Object], [object Object]
。
我无法在警报中显示数据..我应该看到[option1 Value], [option2 inputvalue]
另外,一旦我弄清楚如何在警报中获取数据,如何在PHP中检索它? $_POST['what goes here'];
?
答案 0 :(得分:1)
alert
不会向您提供使用console.log()
的对象的详细信息:
console.log(data);
看看Why is console.log() considered better than alert()?。
希望这有帮助。
答案 1 :(得分:1)
此处没有问题 - 问题是因为您正在使用alert()
进行调试。这意味着显示的变量被强制转换为字符串,因此对象数组将被转换为'[object Object], [object Object]'
。而是使用console.log()
来调试代码。
另外,根据您的尝试,我建议使用serialize()
方法更适合您的需求,并且应该挂钩submit
form
事件因此,当按Enter键提交表单时,使用键盘的人也会触发事件。试试这个:
$('#daterequest_form').on('submit', function (e) {
e.preventDefault();
var data = $(this).serialize();
console.log(data);
$.ajax({
url: 'daterequest.php',
type: 'POST',
data: data,
success: function(response) {
if (response == 'empty') {
$('#error_message').text('ERROR MESSAFGE')
} else {
$('#error_message').html(response);
$('#daterequest_form').fadeOut('400');
};
}
});
});
然后在PHP中,您可以使用$_POST
并指定表单值的name
来检索传递的数据:
var option1 = $_POST['option1'];
var option2 = $_POST['option2'];