正如您所看到的,我想在一段时间内创建多个表单和按钮。问题是,当我想从我的数组中提交一行时,我想执行这个特定的表单而不是另一行。
即使我把按钮标签放在我有问题的表格中。我想设置一个唯一的ID来形成id="form_submit_change_status<?php echo $row['id_user']; ?>"
标签。但问题是我必须对javascript代码做些什么改变。
对不起我的英语,我希望能理解我的问题...
while($row = $result->fetch_array() ){
<form name="form_submit_change_status" id="form_submit_change_status" action="">
<input type="text" class="user_id" id="user_id" name="user_id" value="<?php echo $row['id_user']; ?>" />
<input type="text" name="is_enabled" value="<?php echo $row['is_enabled']; ?>" />
</form>
<button type="submit" id="submit_change_status" class="btn btn-warning btn-xs" value="<?php echo $row['is_enabled']; ?>">Change status</button>
}
$(document).ready(function(){
$('#submit_change_status').click(function(){
var formData = $("#form_submit_change_status").serializeArray();
var userId = $("#user_id").val();
alert(userId);
var URL = $("#form_submit_change_status").attr("action");
var URL = "change_status_user.php";
$.post(URL,
formData,
function(data, textStatus, jqXHR)
{
// alert("Data: " + data + "\nStatus: " + textStatus);
}).fail(function(jqXHR, textStatus, errorThrown)
{
});
var varChangeStatus = $('#is_enabled'+userId).val();
if(varChangeStatus=="true"){
$('#is_enabled'+userId).html('false');
}else{
$('#is_enabled'+userId).html('true');
}
});
});
</script>
// change_status_user.php
$DBConnection = new DBConnection();
if (isset($_POST['is_enabled'])) {
$id = $_POST['user_id'];
$status = $_POST['is_enabled'];
if($status=="true")
$status = "false";
else
$status = "true";
$sql = "UPDATE users SET is_enabled = '$status' WHERE id_user = $id";
$res = $DBConnection->db_connection->query($sql);
echo $sql;
}
答案 0 :(得分:1)
正如上面其他人所建议的那样,使用类而不是ID是灵活的,因为它们需要是唯一的。类还有助于对元素进行分组,以便以后更轻松地访问。
HTML(PHP):
while($row = $result->fetch_array() ){
<form name="form_submit_change_status" class="form_submit_change_status" action="">
<input type="text" class="user_id" name="user_id" value="<?php echo $row['id_user']; ?>" />
<input type="text" class="is_enabled" name="is_enabled" value="<?php echo $row['is_enabled']; ?>" />
<button type="button" class="btn btn-warning btn-xs" value="<?php echo $row['is_enabled']; ?>">Change status</button>
</form>
}
jQuery的:
$(function(){
$('.btn.btn-warning').click(function(e) {
e.preventDefault();
var $form = $(this).closest(".form_submit_change_status");
var formData = $form.serializeArray();
var userId = $form.find(".user_id").val();
alert(userId);
//var URL = $form.attr("action");
var URL = "change_status_user.php";
$.post(URL, formData)
.done(function(data) {
//success
}).
fail(function(jqXHR, textStatus, errorThrown) {
//failure
});
var $isStatus = $form.find(".is_enabled");
var varChangeStatus = $isStatus.val();
$isStatus.val(varChangeStatus=="true" ? "false" : "true");
});
});
答案 1 :(得分:0)
您正在使用while
循环来创建HTML元素,但每次都使用相同的ID属性。 ID必须是唯一的;但是,课程没有。
请改为尝试:
PHP / HTML:
while($row = $result->fetch_array() ){
<form name="form_submit_change_status" class="form_submit_change_status" action="">
<input type="text" class="user_id" name="user_id" value="<?php echo $row['id_user']; ?>" />
<input type="text" class="is_enabled" name="is_enabled" value="<?php echo $row['is_enabled']; ?>" />
<button type="submit" class="btn btn-warning btn-xs" value="<?php echo $row['is_enabled']; ?>">Change status</button>
</form>
}
JS:
$(document).ready(function() {
$('.submit_change_status').click(function(e) {
e.preventDefault();
var $form = $(this).closest(".form_submit_change_status");
var formData = $form.serializeArray();
var userId = $form.find(".user_id").val();
alert(userId);
// var URL = $form.attr("action");
var URL = "change_status_user.php";
$.post(URL,
formData,
function(data, textStatus, jqXHR) {
// alert("Data: " + data + "\nStatus: " + textStatus);
}).fail(function(jqXHR, textStatus, errorThrown) {});
var $isEnabled = $form.find('.is_enabled');
var varChangeStatus = $isEnabled.val();
if (varChangeStatus == "true") {
$isEnabled.html('false');
} else {
$isEnabled.html('true');
}
});
});