是的,您可以让动态更新页面内购物篮的 JavaScript 代码也通过“ajax”向服务器发送更新事件。 jQuery 提供了a variety of useful ajax utilities 来进行这些更新。
我建议服务器拥有购物篮的“规范”版本,并且所有更新操作都会收到购物篮当前内容的副本,并使用它来调整页面上显示的内容。这是因为用户很混乱,你永远不知道他们什么时候会使用“在新标签/窗口中打开”。更新服务器是获取最新信息的机会。
例如,如果用户删除了一个项目,这个伪代码:
$.ajax({
url: "url_of_basket_handler",
data: {remove: productId},
success: updateBasketOnSuccess,
error: basketErrorHandler
});
...其中updateBasketOnSuccess 是一个函数,您的所有处理程序都使用该函数根据响应更新购物篮的显示内容:
function updateBasketOnSuccess(data) {
// Use the given data to update the display
}
...同样basketErrorHandler 处理告诉用户在 ajax 调用中出现错误:
function basketErrorHandler(jxhr, statusCode, err) {
// Tell the user something went wrong
}
我可能会让购物篮处理程序使用JSON 回复以列出购物篮内容和其他元数据。