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)
dogs3)タグをデータベースに再度追加しようとすると、既に存在する/tags/add?tagName=dogsことがわかり、その ID ( )dogsのみが返されます。64
4)その後console.log(data)、再び開始し、ログに記録します64
なぜそれが起こっているのですか?