我试图从div获取所有输入数据,并将其发送进行处理(在PHP中)。但是,即使我确定,由于在调用bookeeDetails函数之前控制台已经记录了变量ajax(),所以仍然有一个值。

$("#finalsubmit").click(function () {
    var bookeeDetails = [];

    $("#bookeeDetails :input").each(function () {
        bookeeDetails[$(this).attr('name')] = $(this).val();
    });

    console.log(bookeeDetails);

    $.ajax({
        url: url,
        type: 'post',
        data: {
            bookee: bookeeDetails
        },
        success: function (response) {
            $("#info").html(response);
        }
    });
});


基本上,我将要访问PHP脚本中的$_POST['bookee']['keyname']。不幸的是,当发送请求时,PHP没有收到任何东西。我已经测试了放入固定值,并且可以正常工作,并且100%确定bookeeDetails包含数据。

这是因为在填充循环完成之前发送请求时还没有填充bookeeDetails的情况吗?如果是这样,我该如何阻止这种情况的发生?

最佳答案

由于我在finalsubmit中看到了“提交”,所以我猜你那里有一个表格,所以你可能正在寻找serializeArray

$( '#bookeeDetails' ).serializeArray();


希望这可以帮助。



var data = $( '#bookeeDetails' ).serializeArray();

var books = {};

$.each(data, function(i, obj){
  books[obj.name] = obj.value;
})

console.log(books);
console.log(books['title']);
console.log(books['autor']);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form id='bookeeDetails'>
  <input type="text" name="title" value="Biography">
  <br>
  <input type="text" name="autor" value="Jack">
  <br>
  <input type="text" name="edition" value="2016">
</form>

07-28 10:47