jQuery $.ajax を使用して、オンザフライで要素をデータベースに追加しています。
サーバー側は最近追加された要素の ID を返します。私はそれを完了イベント ブロックに取り込みたいと考えています。
if(!key) {
$.ajax({
url: "/tags/add",
type: "GET",
data: {tagName:value}
}).done(function(data){
key = data;
});
}
/tags/add 戻り値:
return new Response($tags[0]->getId(), 200, array('Content-Type' => 'text/html'));
ここで、Response はフレームワーク固有です。
URL /tags/add?tagName=123 にアクセスすると
タグが存在しない場合は、そのタグをデータベースに追加しようとします。成功すると、ID が返されます。
上記の例では、リターンで63
しかし、done関数はそれをキャッチしていないようです63
(または数値が何であれ)
これがキャッチです。
dogs
タグが存在しないと仮定しましょう:
1)データベースに/tags/add?tagName=dogs
追加dogs
され、ID が返されます64
2)console.log(data)
doneイベントブロック内の最初の行で行うと、ログに記録されます0
(タグが存在しない場合のデフォルトID)
dogs
3)タグをデータベースに再度追加しようとすると、既に存在する/tags/add?tagName=dogs
ことがわかり、その ID ( )dogs
のみが返されます。64
4)その後console.log(data)
、再び開始し、ログに記録します64
なぜそれが起こっているのですか?