Javascript 从HTML创建数组以通过AJAX发送

Javascript 从HTML创建数组以通过AJAX发送,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我在这件事上经历了一段不同寻常的艰难时期。如果我有这样的表格 HTML <form id='logForm' method='post' action='seatingProcess.php'> <span class='close' style='display:none' id='255' desk='9-4' deskval='2-3' changeType='REMOVE'></span> <span class='close' style='

我在这件事上经历了一段不同寻常的艰难时期。如果我有这样的表格

HTML

<form id='logForm' method='post' action='seatingProcess.php'>

<span class='close' style='display:none' id='255' desk='9-4' deskval='2-3' changeType='REMOVE'></span>
<span class='close' style='display:none' id='255' desk='7-4' deskval='5-3' changeType='ADD'></span>
<span class='close' style='display:none' id='255' desk='8-4' deskval='8-3' changeType='CHANGE'></span>

<div class='btn btn-primary' type='submit' id='submit'>Submit</div>
</form>

提交
我想做的是,当我点击按钮提交表单时,我想在span中创建一个不同元素的数组,这样就可以通过AJAX发送到PHP中进行处理。你建议我怎么做

此外,此信息将根据用户操作在此表单中动态创建。它们都将是span的,但将包含或多或少相同的属性,并附加一个值。其思想是让php接收数组,并根据属性“changeType”所说的内容,生成执行该操作的SQL脚本。我可能也需要帮助

我所拥有的一切都是javascript。我不知道如何生成数组,这正是我需要帮助的地方。上面的HTML是一个示例输出,但我将发布一个生成信息的函数:

Javascript

    function remDeskId(){
    userObject = $dropObject.find('div.dragTest');
    userObjectChange = 'REMOVESEAT';
    userObjectID = userObject.attr('data-info');
    userObjectDeskID = userObject.attr('data-id');
    userObjectDeskIDVal = 0;
    $('form#logForm').append("<span class='close' style='display:none' id='"+userObjectID+"' desk='"+userObjectDeskID+"' deskval='"+userObjectDeskIDVal+"' changeType='"+userObjectChange+"'></span>");

    userObject.attr({"data-id":""}); //remove desk number for new user location
    userObject.appendTo('#userPool');

}

$('#submit').click(function(){
        // get the form data
        // there are many ways to get this data using jQuery (you can use the class or id also)
        //var formData = {

       // };

        // process the form
        $.ajax({
            type        : 'POST', // define the type of HTTP verb we want to use (POST for our form)
            url         : 'seatingProcess.php', // the url where we want to POST
            data        : $('#logForm').serialize(), // our data object

        })
            // using the done promise callback
            .done(function(data) {

                // log data to the console so we can see
                console.log(data); 

                // here we will handle errors and validation messages
            });

        // stop the form from submitting the normal way and refreshing the page
        event.preventDefault();
    });
函数remDeskId(){
userObject=$dropObject.find('div.dragTest');
userObjectChange='REMOVESEAT';
userObjectID=userObject.attr('data-info');
userObjectDeskID=userObject.attr('data-id');
userObjectDeskIDVal=0;
$('form#logForm')。追加(“”);
userObject.attr({“数据id”:“});//删除新用户位置的办公桌号
appendTo(“#userPool”);
}
$(“#提交”)。单击(函数(){
//获取表单数据
//使用jQuery获取此数据的方法有很多(您也可以使用类或id)
//var formData={
// };
//处理表格
$.ajax({
type:'POST',//定义要使用的HTTP谓词的类型(表单的POST)
url:'seatingProcess.php',//我们要发布的url
数据:$('#logForm').serialize(),//我们的数据对象
})
//使用done承诺回调
.完成(功能(数据){
//将数据记录到控制台,以便查看
控制台日志(数据);
//这里我们将处理错误和验证消息
});
//停止表单以正常方式提交并刷新页面
event.preventDefault();
});

提前感谢

您可以迭代跨度并创建数组

var spans = $('#logForm span');
var data = [];

 $.each(spans, function(i, item){
     var newItem = {};
     newItem.id = $(item).attr('id');
     newItem.desk = $(item).attr('desk');
     newItem.deskval = $(item).attr('deskval');
     newItem.changeType = $(item).attr('changeType');

     data.push(newItem);
 });

您可以遍历跨度并创建一个数组

var spans = $('#logForm span');
var data = [];

 $.each(spans, function(i, item){
     var newItem = {};
     newItem.id = $(item).attr('id');
     newItem.desk = $(item).attr('desk');
     newItem.deskval = $(item).attr('deskval');
     newItem.changeType = $(item).attr('changeType');

     data.push(newItem);
 });

发布你的JavaScript部分我不完全理解。听起来您有一些动态输入,用户可以在其中添加字段?你想把这个发送到php吗?我会将其作为json发送到服务器。因此,在JavaScript中,您可以使用输入创建一个json对象。然后将其发送到服务器并解码。这样,数据的结构非常好。似乎比试图将其塞进post数据要好。使用数据属性,并使用jquery的数据函数将其放入循环中,我的第一种方法是JSON,但是,我找不到一种方法将生成的所有数组组合成一个对象,将其发送到服务器。听起来您有一些动态输入,用户可以在其中添加字段?你想把这个发送到php吗?我会将其作为json发送到服务器。因此,在JavaScript中,您可以使用输入创建一个json对象。然后将其发送到服务器并解码。这样,数据的结构非常好。似乎比试图将其塞进post数据要好。使用数据属性,并使用jquery的数据函数将其放入循环中,我的第一种方法是JSON,但是,我找不到一种方法将生成的所有数组合并到一个对象中,以将其发送到服务器。