我建立了一个清单系统,管理人员可以在其中创建产品清单,员工在完成这些产品时需要能够签署这些产品。创建时,每种产品或材料都会附加到修订号。你可以看到它的布局如下。
http://i.imgur.com/MjSc4sA.jpg
因此,当用户点击签收时,它会在那里附加他们的名字并更新表格。
表格结构:
我的表单看起来像这样(我使用twig模板引擎)
{% for item in component %}
<tr>
<td>{{ item.wo_num_and_date }}</td>
<td>{{ item.comp_name_and_number }}</td>
<td>{{ item.finish_sizes }}</td>
<td>{{ item.material }}</td>
<td>{{ item.total_num_pieces }}</td>
<td>{{ item.workorder_num_one }}</td>
<td>{{ item.notes_one }}</td>
<td id='signoff_userone'><input type='button' id='signoff_user_one' data-rowid={{ item.id }} value='Signoff' /> {{ item.signoff_user_one.firstname }} {{ item.signoff_user_one.lastname }}</td>
<td>{{ item.workorder_num_two }}</td>
<td>{{ item.notes_two }}</td>
<td><input type='button' id='signoff_user_two' value='Signoff' /> {{ item.signoff_user_two.firstname }} {{ item.signoff_user_two.lastname }}</td>
<td>{{ item.workorder_num_three }}</td>
<td>{{ item.notes_three }}</td>
<td><input type='button' id='signoff_user_three' value='Signoff' /> {{ item.signoff_user_three.firstname }} {{ item.signoff_user_three.lastname }}</td>
</tr>
{% endfor %}
data-rowid = {{item.id}}
显示该特定行的ID。所以每一行都有自己的id。
我有一个看起来像这样的脚本,如果我使用jQuery + AJAX动态注销并且我使用此更新语句,我认为我需要调用它。
$sql = "UPDATE checklist_component_stock SET signoff_user_one = $user_id WHERE id = " . $row['id'];
mysqli_query($dbc3, $sql);
我将如何使用jQuery + AJAX进行此操作?
我正在玩弄并尝试过类似的东西,但显然它不起作用,可能非常错误。
$('#signoff_user_one').click(function(){
$.post('phplib/job_checklist_signoff.php', { rowid: {{ item.id }} }, function(data){
console.log(data);
$('#signoff_userone').append("<li>" + data.user.name + " (" + data.date + ")</li>");
}, 'json');
});
job_checklist_signoff.php
<?php
require_once('../includes/config.php');
$user = getuserinfo($loggedin_id);
$row_id = mysqli_escape_string($dbc3, $_POST['rowid']);
$sql = "UPDATE checklist_component_stock SET signoff_user_one = $user WHERE id = " . $row_id;
mysqli_query($dbc3, $sql);
$ret = array('rowid' => $row_id, 'user' => $user, 'date' => date('M d, Y'));
echo json_encode($ret);
?>
答案 0 :(得分:1)
// Assuming "tableElement" is the id of the table owning those rows
// This will handle clicks on any button having an id starting with "signoff_user_"
$('#tableElement').on('click', 'input[id^="signoff_user_"]', function (e) {
var $t = $(this);
$.ajax({
type: "POST",
url: "phplib/job_checklist_signoff.php",
data: {
rowid: $t.data('rowid')
},
success: function (data) {
console.log(data);
var list = $t.siblings('ul');
if (!list.length) {
list = $t.after($('<ul>')).next();
}
list.append("<li>" + data.user.name + " (" + data.date + ")</li>");
},
dataType: 'json'
});
});
没有ajax调用的
答案 1 :(得分:0)
$.ajax({
url: "phplib/job_checklist_signoff.php",
type: "POST",
data: "rowid={{item.id}}"
}).done(function(response){
console.log(response);
});
现在你所要做的就是确保在“phplib / job_checklist_signoff.php”中回到那里,你实际上将$_POST['rowid']
处理到查询中,而不是$row
。
在MySQL语句通过报告回复给你之后,根据UPDATE
语句的失败/成功打印任何你想要的东西会很好。您在php文件中打印/回显的所有内容都将通过我登录到控制台的response
变量传递到JS中。您可以利用它并通知用户他的行为。