2013-11-29 55 views
0

我使用colorbox jquery插件與iframe的相關產品鏈接,因爲我不想讓人們離開當前的產品頁面,但我仍然想要一個鏈接到相關產品,因此:

$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"}); 

打開另一個頁面的產品檢測,它是在一個框架打開:

if(window.parent.frames.length > 0) { ...some css changes here... 

該框架中的唯一可點擊項目是加入購物車按鈕,增加了相關產品到購物車。爲了發生這種情況,表單提交給PHP_SELF。意味着頁面必須用$ _POST數組重新加載。這工作正常,但點擊我想關閉該框架,並重新加載父。

$('#addtocartbutton').click(function() { 
    document.cart_quantity.submit(); //this would reload page (in frame) 
    parent.$.colorbox.close(); //closing frame stops the submit/reload 
    parent.window.location.reload(true); //parent reloads but nothing added to cart 

}); 

此提交表單,關閉框架,並重新加載父 - 但提交沒有足夠的時間實際上是「加入購物車」。有沒有一種方法可以將$ _POST數據發送給父項,關閉框架,並用該額外數據重新加載父頁面?

+0

使用ajax發佈數據並在成功時重新加載父項 - http://api.jquery.com/jQuery.ajax/ –

回答

0

它可以像這樣

$('#addtocartbutton').click(function() { 
    var p = parent; 
    document.cart_quantity.submit(function(){ 
     $.ajax({ 
      type: "POST", 
      url: url, 
      data: data, 
      success: function(data){ 
       p.$.colorbox.close(); //closing frame stops the submit/reload 
       p.window.location.reload(true); //parent reloads but nothing added to cart 
      } 
     }); 
    }); //this would reload page (in frame) 
}); 
0

這裏是爲我工作。我修改形式本身在iframe: $("form[name='cart_quantity']").prop('target','_top').prop('action',parent.window.location.href+'?action=add_product');

任何產品頁面還包括附加到購物車的邏輯,改變作用到父頁面(或父產品)配有另外的目標造成: 1)發送$ _POST數組沒有Ajax 2)刷新父頁面(現在顯示在車中的項目) 3)當然也刷新去除顏色框

希望這會幫助別人一天。