2014-05-17 65 views
0

如果禁用了JavaScript,我正在使用php代碼在我的網站上清空我的購物車。唯一的問題是它清空購物車,但也提交頁面。我希望它保持在同一頁面上並清空購物車,因爲該頁面應該提交以檢查是否沒有清空購物車。此外,我不能使用JavaScript的這部分,因爲這是爲沒有啓用JavaScript的用戶的。執行功能,但停止提交頁面

我已經嘗試使用:

return false; 

在後的功能,但它只是做的頁面空白。

這裏是我的代碼:

<form method='post' action='checkout.php'> 
    // some input 
    <input type='submit' id='cart-empty' name='cartEmpty' value='Empty' /> 
</form> 

if($_POST['cartEmpty']) { 
    $this->shippingfee = 0; 
    $this->empty_cart(); 
} 
+0

如果您沒有可用的JavaScript,那麼完整提交是您唯一的選擇。您需要區分「結帳」提交和「空購物車」提交,並對其進行相應處理。 – JLRishe

回答

1

您在其中一條評論中提到您無法修改標題(例如header('Location: form.php);,因爲標題信息已被髮送。爲解決此問題,您應該將檢查的已發佈cartEmpty值移至您的頂部提交頁面

無論何時,內容都會回傳給瀏覽器(甚至包括空白行等空白區域),但是如果在發送任何輸出之前執行此處理,您仍有機會修改這些標頭:

<?php 
if($_POST['cartEmpty']) { 
    $this->shippingfee = 0; 
    $this->empty_cart(); 
    header("Location: cartEmptied.php"); 
    exit(); 
} 
1

可以在checkout.php使用PHP代碼進行驗證,並返回給用戶的頁面(如果用戶不填寫表格):

if(empty($_POST['cartEmpty'])){ 
    header("Location: ./form.php"); 
    die; 
} 
+0

試過之前,但我得到無法修改標題信息 - 頭已發送(輸出開始在header.php:48) – bondbaby11

+0

你只有2個解決方案:1)客戶端驗證與JavaScript 2)服務器端驗證與PHP –

+0

我必須將此代碼移動到標題來解決問題...謝謝! – bondbaby11