1

これはおそらく初心者の質問ですが、本当に助けが必要です。

オンラインストアでウィッシュリストを作成しています。ユーザーがログインしている場合、ウィッシュリストのアイテムはデータベースに保存され、ログインしていないユーザーのウィッシュリストは Cookie を介して保存され、ウィッシュリスト機能に AJAX を使用しています。最初の ajax リクエストで Cookie が更新されないことを除けば、すべてうまくいきます。

これが私の最初のステップです(ajax):

  1. ajaxリクエストを呼び出してウィッシュリストを更新する
  2. 新しい Cookie に基づいてウィッシュリスト テンプレートをリロードします

上記の手順では、ウィッシュリスト テンプレートが自動的に更新され$_COOKIE[]ないため、ページを更新する必要があります。

これは私の更新された手順です(ajax)

  1. ajaxリクエストを呼び出してウィッシュリストを更新する
  2. 別の ajax リクエストを呼び出して、ウィッシュリスト テンプレートをリロードします

上記のコードは問題を解決します ($_cookie値を更新するためだけに 2 番目のステップが呼び出されます)。ただし、ウィッシュリストを更新するには 2 つの ajax リクエストが必要であり、作業に少し時間がかかります。確かに、これは最善の解決策ではありません。私はこれがこれに対するより良い解決策であることを知っています。

助けてください:)

ありがとう

4

1 に答える 1

1

だけで設定できます。あなたはを使用しているので、ページを更新しなくてもをうまく処理できると思います。

実装する必要があるロジックは次のとおりです。

  1. Ajax リクエストを PHP ページに送信します。
    • ログインしている場合、PHP はデータをデータベースに保存し、ステータス値 1 を返します。
    • それ以外の場合、PHP はステータス値 0 を返します。これは、ログインしておらず、データベースに保存できなかったことを意味します。
    • を返している間0、PHP は$_COOKIEスーパーグローバルを設定できます。リクエストが完了すると、ブラウザに Cookie が設定されます。
  2. ajax リクエストのコールバック イベントで、ステータス値を確認します。0データをCookieに保存するだけの場合。この Cookie は から入手できますdocument.cookie。これは

jQueryを使ったサンプルコード

// ajax.js
$.post("updatewishlist.php", 
{
    'wishlist_item':'wishlist_value'
},
function(json){
// callback function
    if(json.status==0){
        $.cookie('the_cookie', 'the_value', { expires: 7 });
    }
});

ここでは、jquery cookie プラグインを使用しました

// updatewishlist.php
<?php
if(user_logged_in()){
// sanitize input here
// update database with $_POST['wishlist_item']
$status = 1;
}else{
// update the cookie
// manipulate $_COOKIE super global
$status = 0;
}

// echoing json

echo json_encode(array('status' => $status));

?>
于 2012-05-28T06:18:35.463 に答える