私は簡単な問題を理解できません。 AJAXを使用してページに通貨の変更(RUR/EUR/USD)を追加する必要があるウェブサイトがありますか?私は最高のオプションと思う - それは$_SESSION
で選択された通貨で書かれ、後でPHPコード(表示価格など)で使用します。
マイindex.php
ファイル:
<?php
session_start();
if (!isset($_SESSION['currency'])) $_SESSION['currency'] = 'rouble';
?>
<!-- Links -->
<a href="#" class="currency__change" data-currency="dollar">Dollar</a>
<a href="#" class="currency__change" data-currency="euro">Euro</a>
<a href="#" class="currency__change" data-currency="rouble">Rouble</a>
<!-- Add jQuery and script -->
<script src="jquery-2.2.4-min.js"></script>
<script src="ajax.js"></script>
ここに私のajax.js
ファイル:
;(function($, window, document, undefined) {
// On document ready.
$(document).ready(function() {
// Change currency.
$('.currency__change').on('click', function(event) {
// Prevent default.
event.preventDefault();
// Send AJAX request.
$.ajax({
type: 'POST',
url: 'Ajax.php',
data: { 'currency': $(this).data('currency') },
success: function() {
location.reload();
},
error: function() {
alert('Error! Try again later.');
}
});
});
});
})(jQuery, window, document);
そして今、私のAjax.php
ファイル:
<?php
session_start();
// Change currency.
if ($_POST['currency']) {
unset($_SESSION['currency']);
$_SESSION['currency'] = $_POST['currency'];
}
?>
セッションが正常に起動し、私は上のセッションファイルを取得します私のサーバ(デフォルト値)と正しいヘッダ:
しかし、私はAJAXのリンクをクリックした場合 - $_SESSION['currency']
内の変数は変更されません。
なぜですか?
なぜ新しい値を割り当てる前に変数を設定解除するのですか?変数を設定解除する必要はありません。通貨の値はデータを送信する前に新しい値になると期待されます。あなたの 'Ajax.php'の' if'文は何もチェックしていない変数が 'true'のようなブール値を持っている場合にのみ、あなたのケースで' if(isset($ _ POST ['currency'])) ' –