我正在使用 jQuery $.ajax 将元素即时添加到我的数据库中。
服务器端返回最近添加的元素的 ID,我想在我的 done 事件块中捕获它。
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
到数据库中,并将返回 ID64
2)如果我console.log(data)
在 done 事件块内的第一行中执行,它将记录0
(标签不存在时的默认 ID)
3)如果我尝试dogs
再次向数据库添加标签,/tags/add?tagName=dogs
将看到它dogs
已经存在,并且只会返回它的 id ( 64
)
4)然后console.log(data)
再次启动,并记录64
知道为什么会这样吗?