Dmi*_*try 1 ajax coldfusion session shopping-cart
有没有办法刷新页面上的coldfusion会话而不重新加载页面?假设我的购物车中有3件商品.现在,我想通过点击产品旁边的"删除"链接来删除其中一个项目.我创建了delete_item.cfm,它使用jquery ajax从购物车中删除特定商品.现在我希望我的购物车只显示2个项目而不重新加载页面.这是我的代码.
<CFIF ISDEFINED("ProductID")>
<!--- Find where in the basket it is --->
<CFSET ItemPosition = ListFind(session.StoreItems,ProductID)>
<CFSET session.StoreItems = ListDeleteAt(session.StoreItems, ItemPosition, ",")>
<CFSET session.StoreItemsQty = ListDeleteAt(session.StoreItemsQty, ItemPosition, ",")>
Run Code Online (Sandbox Code Playgroud)
这与ColdFusion没什么关系,更多的是与一个非常常见的Ajax设计模式有关.你已经把大部分都做对了; 这是一般的想法:
用户点击[delete].
JavaScript处理程序函数将要删除的项的ID发送到delete_item.cfm服务器上的处理程序.例:
$('a.deletelink').click( function(e){
e.preventDefault();
$.ajax({
url : '/handlers/delete_item.cfm',
data : $(this).data('id'),
type : 'post',
success : /* see below */
});
});
Run Code Online (Sandbox Code Playgroud)在服务器上,另一个函数检索受更改影响的页面区域的更新视图 - 现在没有已删除的项目. delete_item.cfm调用此函数并将更新的视图信息返回给Ajax请求者.这可以采取以下形式:
在successAjax调用的处理程序中,接收更新的视图信息.然后是你:
delete_item.cfm,替换最初包含您要删除的项目的旧版本.例:
/* success handler from above */
function(data){ // data is what's returned from delete_item.cfm
// Assuming it's fully rendered HTML post-deletion:
$('#container_of_your_list')
.html( data ) // drop in new data
.effect('highlight',{},2000); // visual feedback to user
}
Run Code Online (Sandbox Code Playgroud)