0

クライアントの 1 人に割引機能を作成しました。選択したクーポンがクーポン フィールドに入力されるたびに、クーポンが有効であるか、クーポンが存在するかをデータベースから照合します。はいの場合は、ユーザーに 10% の割引を与える計算を行い、割引額をユーザーに表示します。Chrome では正常に動作しますが、Firefox で同じ機能をテストしているときに、動作が非常に奇妙です。それは私に約20%、50%の割引を与えています。いくつかのランダムな数学計算のように。

jquery、php、mysql を使用して、顧客にリアルタイムで結果を表示しています。この問題は本当に私をからかっています。最初はPHPセッションを使用して割引値を取得していましたが、割引値をdbに保存してから、計算のために再度取得しようとしました。しかし、同じ問題が発生します。この時点で私はとても混乱しています。

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>";
}
?>

このコードについて説明します。2 つの $post 関数を使用した理由は、現在のページから 2 つの値を取得したためです。1 つは「coup」に設定されたクーポン コードで、もう 1 つは「disc」に設定された合計計算額です。次に、両方の値が異なる php ページに処理され、結果が出力されます。問題は PHP コードではないと思います。問題は私のjqueryコードにあります。PHPコードでいくつかの定数値を使用して200-100のような計算をしようとしましたが、うまくいきました。しかし、「ディスク」変数の値が違いを生んでいます。

問題解決: この $200 のようなスペースを含めた実際に何が起こっていたのか

このスペースは、Firefox ブラウザーですべての問題を引き起こしていました。そのため、最初は substr() を使用していましたが、文字列を位置 1 から分割していましたが、現在は. ブレーク位置を変更して 2 に設定したところ、すべてが正常になりました。ところで、皆さんの助けに感謝します:)

4

1 に答える 1

3

PHPはサーバーサイド言語です。リクエストがサーバーに送信され、サーバーが PHP コードを実行します。これは、使用しているブラウザーに関係なく、PHP コードが別の結果を返すことができないことを意味します。同じことが MySQL データベースにも当てはまります。これがわかれば、問題を特定できます。

問題は HTML または JavaScript (jQuery) にあります。コードがなければ、どこにあるのかわかりません。


あなたの編集を読んだ後:

割引値を db に保存してから、計算のために再度取得しようとしました。しかし、同じ問題が発生します。

応答を処理しているときに何か問題が発生したように聞こえます。常に静的な値を返すように PHP コードを一時的に変更しても、ブラウザーが依然として異なる結果を返す場合は、javascript が値を正しく解釈していないことがわかります。

そうでない場合、ブラウザが送信するデータが異なることがわかります。どちらの場合も、バグは JavaScript にある可能性が高いです。

これは、この小さな情報で得られる最良の答えです。

于 2012-08-03T09:03:21.877 に答える