我有点击事件......
$('#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中更改以获得我想要的内容并使这些内容更容易使用?我想我在这里错过了一个关键概念。
答案 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/