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