我具有一些特定问题的Ajax更新功能,我敢肯定,只需进行一些调整即可使其100%奏效。
我将尽力总结以下问题。
我有两个相互交互的文件:
我的Ajax尝试根据所单击的按钮更新表int值。否= 0,是= 1,取消= 2。
orders.php
页面开始
<?php
session_start();
require_once('orders-claimed.vc.php');
?>
按钮的表格列:
<td data-target="scheduled">
<input id='userId' type='hidden'/>
<?php
if ($rowOrder['scheduled'] == 1) {
?>
<a href="#" data-role="update" data-id="<?php echo $rowOrder['orderid'] ;?>"><button class="btn-success">YES</button></a>
<?php
} else if ($rowOrder['scheduled'] == 0) {
?>
<a href="#" data-role="update" data-id="<?php echo $rowOrder['orderid'] ;?>"><button class="btn-danger">NO</button></a>
<?php
} else if ($rowOrder['scheduled'] == 2) {
?>
<a href="#" data-role="update" data-id="<?php echo $rowOrder['orderid'] ;?>"><button class="btn-warning">CANCELLED</button></a>
<?php
}
?>
</td>
用于与表格互动的模式
<!-- Modal content-->
<div class="modal-content" style="width: 300px; margin: 0 auto;">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<div class="modal-body">
<div class="form-group">
<a href="#" id="update_yes" class="btn btn-success text-center center-block">YES</a><br>
<a href="#" id="update_no" class="btn btn-danger text-center center-block">NO</a><br>
<a href="#" id="update_cancelled" class="btn btn-warning text-center center-block">CANCEL</a>
</div>
</div>
</div>
</div>
ajax代码
<script>
$(document).ready(function(){
// append values in input fields
$(document).on('click','a[data-role=update]',function(){
var id = $(this).data('id');
var scheduled = $('#'+id).children('td[data-target=scheduled]').text();
$('#userId').val(id);
$('#myModal').modal('toggle');
});
// now create event to get data from fields and update in database
$('#update_no').click(function(){
var id = $('#userId').val();
var scheduled = 0;
$.ajax({
url : 'orders-claimed.vc.php',
method : 'post',
data : {scheduled: scheduled , id: id},
success : function(response){
// now update user record in table
$('#'+id).children('td[data-target=scheduled]').html('<a href="#"><button class="btn-danger">NO</button></a>');
$('#myModal').modal('toggle');
}
});
});
$('#update_yes').click(function(){
var id = $('#userId').val();
var scheduled = 1;
$.ajax({
url : 'orders-claimed.vc.php',
method : 'post',
data : {scheduled: scheduled , id: id},
success : function(response){
// now update user record in table
$('#'+id).children('td[data-target=scheduled]').html('<a href="#"><button class="btn-success">YES</button></a>');
$('#myModal').modal('toggle');
}
});
});
$('#update_cancelled').click(function(){
var id = $('#userId').val();
var scheduled = 2;
$.ajax({
url : 'orders-claimed.vc.php',
method : 'post',
data : {scheduled: scheduled , id: id},
success : function(response){
// now update user record in table
$('#'+id).children('td[data-target=scheduled]').html('<a href="#"><button class="btn-warning">CANCELLED</button></a>');
$('#myModal').modal('toggle');
}
});
}); });
</script>
请注意,以上所有代码都在同一个文件(orders.php)中
[![1] [2]] [2]
[![modal] [1]] [1]
这些是我在页面中的扩展名。大多数都存储在文件夹中并正在链接。
<script src="../_lib/v/jquery.slim.min.js"></script>
<script src="../_lib/v/bootstrap/js/bootstrap.js"></script>
<script src="../_lib/v/jquery-ui/jquery-ui.js"></script>
<script src="../_lib/v/jscolor/jscolor.js"></script>
<script src="js/cms.js"></script>
<link href="../_lib/v/bootstrap/css/bootstrap.min.css" rel="stylesheet">
Ajax在slim.min.js下无法运行,并显示“不是函数错误”,因此我将其从https://code.jquery.com/jquery-3.3.1.js更改为常规版本的jquery
问题
如果我切换到完整版的jquery,则该列会更新,但是会话(已登录的用户)会结束并自动注销。为什么会这样?
orders-claimed.vc.php也是SQL更新发生的地方。