我有表格,你可以在其中找到工作经历,这显示在一行三个输入中:职位,工作持续时间和工作地点。您可以添加添加一组空输入的工作,您可以在其中添加更多数据。
我通过AJAX将HTML表单发送到PHP脚本,它分别发送具有相同名称的所有输入集,因此不在数组中。在PHP方面,我通过将它们放在一个数组中来编码post变量。 $json_data
问题是PHP脚本只保存最后一组输入。所以如果你输入3个工作,它只保存最后一个。
<!-- employment row -->
<p class="mt-3 text-left"> Employment history </p>
<div class="row employment_block">
<div class="col-md-3">
<input type="text" name="job_title[]" placeholder="Job title">
</div>
<div class="col-md-3">
<input type="text" name="job_duration[]" placeholder="Duration (i.e. 3 months / 1 year)">
</div>
<div class="col-md-3">
<input type="text" name="job_location[]" placeholder="Country">
</div>
<div class="col-md-3 text-center">
<button href="#" class="able_btn m-0 w-100 disabled" disabled aria-disabled="true" style="opacity:0.5"> remove </button>
</div>
</div>
<div class="text-center mb-3 mt-3">
<a class="add_employment" href=""> Add employment </a>
</div>
<!-- JS -->
$(document).ready(function(){
$(".account_cv_update_form").submit(function(evt){
evt.preventDefault();
var formData = new FormData($(this)[0]);
$.ajax({
url: 'handlers/cv_update.php',
type: 'POST',
data: formData,
async: false,
cache:false,
contentType: false,
processData: false,
dataType: "json",
success: function (response) {
switch(response.message){
case 'success': success();
break;
case 'error': error();
break;
}
}
});
return false;
});
});
$('.add_employment').click(function(evt) {
evt.preventDefault();
$('.employment_block:last').after('<div class="row employment_block"><div class="col-md-3"><input type="text" name="job_title" placeholder="Job title"></div><div class="col-md-3"><input type="text" name="job_duration" placeholder="Duration (i.e. 3 months / 1 year)"></div><div class="col-md-3"><input type="text" name="job_location" placeholder="Country"></div><div class="col-md-3 text-center"><button class="able_btn m-0 w-100 remove_employment"> remove </button></div></div>');
});
<!-- PHP code -->
$json_data = array(
'job_title' => $job_title,
'job_location' => $job_location,
'job_duration' => $job_duration );
$cv_data = json_encode($json_data);
$stmt = $dbh->prepare("UPDATE table SET profile_picute=:profile_picute, first_name=:first_name, last_name=:last_name, phone_number=:phone_number, email_address=:email_address, data=:data WHERE id=:id");
$stmt->bindParam(':profile_picute', $new_file_name);
$stmt->bindParam(':first_name', $first_name);
$stmt->bindParam(':last_name', $last_name);
$stmt->bindParam(':phone_number', $phone_number);
$stmt->bindParam(':email_address', $email_address);
$stmt->bindParam(':data', $cv_data);
$stmt->bindParam(':id', $user_id);
if($stmt->execute()){
$response["message"] = 'success';
}else{
$response["message"] = 'error';
$errors++;
}
echo json_encode($response);
exit();
答案 0 :(得分:0)
正如我在评论区所述:
我不太了解JS,但
$('.employment_block:last').after.....
中的输入没有像上面的输入那样的数组[]
,所以我不确定他们是否应该拥有它们还
OP:
是的,我刚检查过。你是对的。创建答案,我会将其标记为正确。 - 鲍勃
所以我是对的,今天我学会了一些JS; - )
因此这一行:
$('.employment_block:last').after('<div class="row employment_block"><div class="col-md-3"><input type="text" name="job_title" placeholder="Job title"></div><div class="col-md-3"><input type="text" name="job_duration" placeholder="Duration (i.e. 3 months / 1 year)"></div><div class="col-md-3"><input type="text" name="job_location" placeholder="Country"></div><div class="col-md-3 text-center"><button class="able_btn m-0 w-100 remove_employment"> remove </button></div></div>');
});
应该读作并为输入添加[]
:
$('.employment_block:last').after('<div class="row employment_block"><div class="col-md-3"><input type="text" name="job_title[]" placeholder="Job title"></div><div class="col-md-3"><input type="text" name="job_duration[]" placeholder="Duration (i.e. 3 months / 1 year)"></div><div class="col-md-3"><input type="text" name="job_location[]" placeholder="Country"></div><div class="col-md-3 text-center"><button class="able_btn m-0 w-100 remove_employment"> remove </button></div></div>');
});
为了将它们视为数组。