本文介绍了个人飞机票订单改签按钮的编写。
我认为个人飞机票订单改签的关键是将所选订单的信息储存起来,然后根据订单中的起始地和终点地进行航班的搜索,选择航班购买后还要将原来的订单给退订。
将所选订单的信息储存起来
在后端写一个基于spring MVC的Java后端控制器方法,处理HTTP POST请求,并返回一个Map作为JSON响应。
@PostMapping("/change")
@ResponseBody
public Map sendLoginResult(@RequestBody Map<String,String> map1
, HttpSession session){
Map map = flightTicketService.changeOrder(map1, session);
return map;
}
具体实现changeOrder这个方法
首先创建一个新的 HashMap 对象 map1,用于存储返回给前端的数据,然后将状态码和消息初始化。将传入的 map 对象存储在会话中,键名为 "cforder",这样可以在会话期间保持订单信息。将 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("cforder",map);
map1.put("msg",msg);
map1.put("status",status.toString());
return map1;
}
通过以上操作就完成了将所选订单的信息储存起来的操作。
改签按钮的点击事件
当用户点击按钮时,获取对应的订单ID和信息,然后通过AJAX将这些信息发送到服务器将订单信息储存起来,最后根据服务器返回的结果做出相应的页面跳转或其他处理。
var orderId = $(this).data("order-id");
var param = orders.find(order => order.id == orderId);
$.ajax({
url:'/flight/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='/cflight';
}
}
});
新页面的初始化和改签的实现
新页面是与购买飞机票的页面基本相似的页面,去除了上方的输入框,修改了初始化和购买的方法。
首先是初始化,初始化时根据会话中储存的订单信息进行初始化
loadFlights(1, 10, cforder.oapname,cforder.aapname);
购买时不仅要添加新订单还要把原来的订单进行退订操作,完成操作后还要返回飞机票个人订单的页面
$.ajax({
url: '/flight/order/' + cforder.id,
type: 'DELETE',
success: function(success) {
// 删除成功后的操作,更新订单列表
if (success) {
alert("改签成功!");
console.log("Order deleted successfully");
layer.closeAll();
window.location.href='/flight_order';
} else {
console.error("Failed to delete order");
}
},
error: function(xhr, status, error) {
// 删除失败时的操作,可以提示用户或者记录错误信息等
console.error("Error deleting order:", error);
}
});