javascript - ajax serializearray 不输出任何值

标签 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['这里是什么']; ?

最佳答案

这里没有问题 - 问题是因为您正在使用 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'];

关于javascript - ajax serializearray 不输出任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34632247/

相关文章:

javascript - 设置间隔 NaN 变量

PHPExcel - colspan 主题名称

jquery - 如何使用Jquery从iframe标签的内部元素访问iframe标签的外部元素

jquery - 使用 jQuery 根据输入和位置属性显示 div

javascript - http 请求数据中的多个包

php - 当查询中的变量周围没有引号时,mysql_real_escape_string 是否可能进行 SQL 注入(inject)?

php - 我想简单地制作一个使用 zendframework2 连接到 mysql 数据库的对象

javascript - Chrome 跨站点资源 - 网站无法正常工作

javascript - react-sound-强制React组件更新并定位?

javascript - Angular JS : How to avoid loss of data of $http call on page refresh?