本文介绍了个人火车票订单改签按钮的编写。
我认为个人火车票订单改签的关键是将所选订单的信息储存起来,然后根据订单中的起始地和终点地进行车次的搜索,选择车次购买后还要将原来的订单给退订。
将所选订单的信息储存起来
在后端写一个基于Spring MVC的Java后端控制器方法,处理HTTP POST请求,并返回一个Map作为JSON响应。
@PostMapping("/change")
@ResponseBody
public Map sendLoginResult(@RequestBody Map<String, String> map1, HttpSession session) {
Map map = trainTicketService.changeOrder(map1, session);
return map;
}
具体实现changeOrder这个方法
首先创建一个新的 HashMap
对象 map1
,用于存储返回给前端的数据,然后将状态码和消息初始化。将传入的 map
对象存储在会话中,键名为 "ctorder",
这样可以在会话期间保持订单信息。将 msg
和 status
添加到 map1
中,作为方法的返回结果。这个 map1
将会被转换为 JSON 或其他格式发送给前端。下面是相应的代码:
public Map changeOrder(Map<String, String> map, HttpSession session) {
HashMap<String, Object> map1 = new HashMap<>();
Integer status=200;
String msg="";
session.setAttribute("ctorder",map);
map1.put("msg",msg);
map1.put("status",status.toString());
return map1;
}
通过以上操作就完成了将所选订单的信息储存起来的操作。
改签按钮的点击事件
点击改签按钮之后会获取相应的订单信息,并将其储存在会话中,并打开改签的新页面。
通过以下代码获取订单信息
var orderId = $(this).data("order-id");
var param = orders.find(order => order.id == orderId);
发送 AJAX 请求将订单信息储存在会话中,并打开改签的新页面。
$.ajax({
url:'/train/order/change',
type:'post',
// async:false,
data:JSON.stringify(param),
contentType: "application/json; charset=utf-8",
dataType:"json",
success:function (data){
if (data.status==200){
window.location.href='/ctrain';
}
}
});
通过以上操作就完成了改签按钮的点击事件
新页面的初始化和改签的实现
新页面是与购买火车票的页面基本相似的页面,去除了上方的输入框,修改了初始化和购买的方法。
初始化时根据会话中储存的订单信息进行初始化
getTrains(1, 10, ctorder.dptStationName, ctorder.arrStationName);
购买时不仅要添加新订单还要把原来的订单进行退订操作,完成操作后还要返回火车票个人订单的页面
$.ajax({
url: '/train/order/' + ctorder.id,
type: 'DELETE',
success: function(success) {
// 删除成功后的操作,更新订单列表
if (success) {
alert("改签成功!");
console.log("Order deleted successfully");
layer.closeAll();
// 调用函数重新加载订单列表
window.location.href='/train_order';
} else {
console.error("Failed to delete order");
}
},
error: function(xhr, status, error) {
// 删除失败时的操作,可以提示用户或者记录错误信息等
console.error("Error deleting order:", error);
}
});
通过以上操作就完成了新页面的初始化和改签的实现。