【问题标题】:coldfusion session refresh冷融合会话刷新
【发布时间】:2011-07-13 04:37:30
【问题描述】:

有没有办法刷新页面上的coldfusion会话而不重新加载页面?假设我的购物车中有 3 件商品。现在我想通过单击产品旁边的“删除”链接来删除其中一项。我创建了使用 jquery ajax 从购物车中删除特定项目的 delete_item.cfm。现在我希望我的购物车只显示 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, ",")>

【问题讨论】:

    标签: ajax session coldfusion shopping-cart


    【解决方案1】:

    这与 ColdFusion 没有太大关系,更多的是与非常常见的 Ajax 设计模式有关。你大部分都做对了;这是总体思路:

    1. 用户点击[delete]

    2. 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 */
        });
      });
      
    3. 在服务器上,另一个函数检索受更改影响的页面区域的更新视图 - 现在没有删除的项目。 delete_item.cfm 调用此函数并返回更新的视图信息给 Ajax 请求者。这可以采取以下形式:

      • 原始数据,可能是 JSON 字符串的形式,或者...
      • 要重新绘制的区域的完全呈现的 HTML 版本。
    4. 在 Ajax 调用的 success 处理程序中,接收到更新的视图信息。然后你:

      • 遍历 JSON 数据并在 JavaScript 中构建适当的 HTML,然后将其放入容器区域(可能使用模板引擎),或者...
      • 放入由delete_item.cfm 提供的完全呈现的HTML,替换最初包含您要删除的项目的旧版本。

      例子:

      /* 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
      }
      

    【讨论】:

    • 比我的答案更深入,尽管我的答案仍然正确:)。肯应该得到这个答案。
    • @Dan,答案的长度与我通过回答避免的任务的平庸程度成正比。
    • 我非常同情那种感觉 :)
    【解决方案2】:

    当然。当您发出 AJAX 请求时,您是以用户身份发出请求......因此,如果您对会话进行任何更改,它将在用户会话上进行这些更改。话虽如此,如果您想重绘购物车页面,则需要使用客户端 javascript 完成所有这些操作,就像您进行 AJAX 调用一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      相关资源
      最近更新 更多