如何为1 ajax调用格式化2个变量,以便我可以轻松使用数据?

时间:2015-08-07 21:49:03

标签: php jquery ajax

我有点击事件......

$('#save').on('click', function(){

    var employee = $('#employee').serialize(); // form with name, phone, email etc.

    var training = []; // empty array for now

    $('.entry').each(function(){

        var tid = $(this).attr('id'); // number
        var start = $(this).find('#start').val(); // date
        var expiration = $(this).find('#expiration').val(); // date

        var entry = [tid, start, expiration]; // create array with data

        training.push(entry); // push each entry into array

    });

    $.ajax({

        method: 'post',
        url: 'brain.php',
        data: {'training':training, 'employee':employee},
        success: function(results) {

            console.log(results)

        } 

    });

});

接收此调用的PHP看起来像这样......

 $employee = $_POST['employee']; // has string of input values
 $training = $_POST['training']; // has array of entries

现在这个工作了,我收到了两个变量,但是为了我的目的,它们很难用于将它们放入数据库中。我真的不知道如何轻松获取数据。我想要这样的东西......

$firstName = $_POST['employee']['first-name']; // first-name input
$lastName  = $_POST['employee']['last-name']; // last-name input

$entry1 = $_POST['training'][0]; // array data found in 0
$entry2 = $_POST['training'][1]; // array data found in 1

我的问题是,我需要在javascript或PHP中更改以获得我想要的内容并使这些内容更容易使用?我想我在这里错过了一个关键概念。

1 个答案:

答案 0 :(得分:1)

在我看来,由于您没有太多数据,您可以手动为员工创建一个对象,而不是使用序列化。您还可以使用对象作为训练条目而不是阵列,然后训练阵列中的每个点都有一个对象来表示训练,其ID与训练阵列中的位置相对应。这有点罗嗦,但这就是我的意思:

$('#save').on('click', function(){

    var employee = {
        "first-name":$('#employee').find('[name=first-name]').val(),
        "last-name":$('#employee').find('[name=last-name]').val()
    };

    var training = []; // empty array for now

    $('.entry').each(function(){

        var tid = $(this).attr('id'); // number
        var start = $(this).find('#start').val(); // date
        var expiration = $(this).find('#expiration').val(); // date

        var entry = {start:start,expiration:expiration}; // create object with data

        training[tid] = entry; // push each entry into array, using ID of entry as index

    }); 
    var data = {employee:employee, training:training};

    //POST function here - use data variable as data
});

这是一个小提琴:http://jsfiddle.net/x2hfb719/