ajax serializearray不输出任何值

时间:2016-01-06 11:39:26

标签: javascript php jquery ajax

我有一个表单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'];

2 个答案:

答案 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'];