0

コミック サイトにタグ付けシステムを実装しています。

タグ付け機能は次のことを行う必要があります。

  • ユーザーが複数のタグを選択して、選択したタグを表示できるようにします。選択したタグは、表示されるコミックをフィルタリングする必要があります
  • ユーザーが選択したタグを選択解除できるようにします。これにより、選択したタグが更新され、返されたコミックが更新されます

ここに画像の説明を入力

私が問題を抱えている部分は、上の画像の青色です。

ユーザーが選択したタグを削除することを選択した場合、どうすれば同じ php スクリプトにコールバックできますか?

ありがとう!

4

2 に答える 2

1

最初にできることは、操作されているタグの配列を送信することです。それらは追加または削除されている可能性があります-問題ではありません。

Javascript

$.get("getTags.php", {tags:["tag1","tag2","tag3"]}, function(data) {
    //have PHP return an updated list of tags.
});

次に、送信されたタグを繰り返し、それらが既に存在するかどうかを確認します。それらが存在する場合は、それらを削除します。それ以外の場合は、それらを追加します。

PHP

$tags = $_GET["tags"];

foreach ($tags as $tag) {
    if (array_key_exists($tag, $_SESSION['tags'])) {
        unset($_SESSION['tags'][$tag]);
    } else {
        $_SESSION['tags'][$tag] = $tag;
    }
}

//Return your updated list of tags here.

必要に応じて、すべてが同期していることを確認するために、更新されたタグのリストを返すことができます。


もう 1 つのオプションは、AJAX 呼び出しで「アクション」パラメーターを送信することにより、実行しているアクションを明示的に指定することです。

Javascript

$.get("getTags.php", {action: "remove", tags: ["tag1"]}, function(data) {
     //Do whatever
}

次に、PHP でそのケースを処理します。

PHP

$availableActions = array("add", "delete");
$action = $_GET['action'];

//Make sure it's a valid action
$action = array_key_exists($action, $availableActions) ? $action : "add"; //Set a default.

//Now handle each action
switch ($action) {
    case "add":
        //Do stuff.
        break;
    case "delete":
        //Do stuff.
        break;
    default:
 }
于 2013-02-26T16:31:08.853 に答える
1

$_SESSION 配列の既知のキーの下に要素をプッシュしているだけだとすると、要素が存在するかどうかを確認するだけでよいのではないでしょうか? に似たもの

if(isset($_SESSION[$tag])) {
  unset($_SESSION[$tag]);
} else {
  $_SESSION[$tag] = 1;
}

それを使用するには、単に使用しますarray_keys()。JS 側を変更する必要はありません。

于 2013-02-26T16:28:38.593 に答える