2012-08-03 117 views
0

我爲我的客戶之一創建了折扣功能。每當選定的優惠券被輸入到優惠券fiedld中時,它將從數據庫中匹配它,優惠券是否處於活動狀態並存在?如果是,那麼它會進行一些數學計算,給用戶10%的折扣並顯示用戶,折扣金額。它在Chrome中工作正常,但是當我在Firefox中測試相同的功能時,它表現得如此奇怪。它給我20%左右,50%的折扣。就像一些隨機數學計算一樣。在不同瀏覽器中進行不同的數學計算

我正在使用jquery,php,mysql向客戶實時顯示結果。這個問題真的是在戲弄我。最初,我使用PHP會話來獲得折扣價值,但我嘗試將折扣值存儲在數據庫中,然後再次檢索以進行計算。但同樣的概率發生。在這一點上我很困惑。

這裏是jQuery代碼:

<script type="text/javascript"> 
$(document).ready(function(){ 
$("button").click(function(){ 
    $.post('coupapply.php', {coup:$('#coupon').val()}, function(result) { 
    }); 
    $.post('discount.php', {disc:$('#totamt tr').find("td").eq(1).html()}, function(result) { 
    $('#cpresult').html(result); 
    }); 
}); 
}); 
</script> 
<span id='cpresult'></span> 

這裏是PHP代碼:

<? 

if ($_REQUEST) { 
$disc = $_REQUEST['disc']; 
$amt = substr($disc, 1); 
$caldisc = $amt*0.1; 
$total = (200-$caldisc); 
echo "<spain style='font-size:14px;'>*10% discount applied* Pay ".$total." now!</span>"; 
} 
?> 

讓我解釋一下這段代碼。我使用兩個$ post函數的原因是因爲我從當前頁面獲得了兩個值。一種是設置爲'coup'的優惠券代碼,另一種是設置爲'disc'的總計算量。然後這兩個值處理到不同的php頁面並打印結果。 我認爲問題不在於PHP代碼。概率是與我的jQuery代碼。我試圖在php代碼中使用一些常量值來計算像200-100,它工作正常。但'光盤'變量的價值是有所作爲的。

問題解決了:什麼是實際發生的事情,我已經包含這樣  $ 200

這個空間是在Firefox瀏覽器中創建的所有問題的空間。所以,我使用substr()最初是從位置1打破字符串,但現在。我改變了突破位置並將其設置爲2,現在一切都很好。順便說一句,感謝您的幫助球員:)

+0

你的問題是什麼? – 2012-08-03 09:02:24

+2

如果您沒有發佈計算,我們如何評論? – 2012-08-03 09:02:37

+0

對不起,我已經提供了代碼。請看看它。 – 2012-08-03 10:29:49

回答

3

PHP是一種服務器端語言。一個請求被髮送到服務器,服務器運行PHP代碼。這意味着無論您使用哪種瀏覽器,您的PHP代碼都無法返回不同的結果。同樣的事情適用於你的MySQL數據庫。知道這一點,我們可以找出問題所在。

問題出在您的HTML或JavaScript(jQuery)中。沒有代碼,我們不知道在哪裏。


閱讀您的編輯後:

我試圖存儲在數據庫中的折扣值,然後再 取回計算。但同樣的概率發生。

當您處理響應時聽起來像是出了點問題。如果您臨時更改您的PHP代碼,以便它始終返回靜態值,並且瀏覽器仍然給出不同的結果,那麼您知道這是您的JavaScript錯誤地解釋值。

如果不是,我們知道瀏覽器發送的數據是不同的。在這兩種情況下,該錯誤很可能會出現在您的JavaScript中。

這是您用這些小信息得到的最佳答案。

+0

我明白了你的觀點,並且通過將一些靜態整數值放入discount.php頁面進行測試,結果表現正常。當我試圖從​​標記中獲取總成本時,問題看起來像是某種東西,然後它通過jQuery代碼傳遞不同的值。但它在Chrome中正常工作,但在Firefox中出現問題 – 2012-08-03 10:32:31

+0

嘗試用'$ caldisc = intval($ amt);'替換'$ caldisc = $ amt * 0.1;'。讓我們看看是否有效... – 2012-08-03 10:57:35

+0

問題解決了:) – 2012-08-03 11:38:48

相關問題