在我的应用程序中,a显示可用的时间段(用于预约)。我想在已经占用的插槽()中添加一个类"占用"。为此,我编写了以下代码。
$("td").each(function(){
var send = $(this).text();
$.ajax({
url:'ajax/check-availability.php',
context: this,
data:{"slot":send},
dataType:'json',
type:'get',
success: function(result){
console.log(result);
if (result.status === "taken") {
$(this).addClass('taken');
};
}
});
});
它应该执行一个ajax调用,如果插槽的结果是"take",则将类"taked"添加到相应的中。它完成ajax调用部分,但将类添加到表中的所有td元素中,而不仅仅是已获取的元素。
check-availability.php在浏览器中调用时返回'take',但什么也没发生。此外,当条件更改为result.status=="notTake"时,所有s都被添加到类"take"
我该如何解决这个问题?
$("td").each(function(){
var that = this;
var send = $(this).text();
$.ajax({
url:'ajax/check-availability.php',
context: this,
data:{"slot":send},
dataType:'json',
type:'get',
success: function(result){
console.log(result);
if (result.status === "taken") {
$(that).addClass('taken');
};
}
});
});
请参阅此以获取更多参考:$(this)内部AJAX成功不工作
Ajax jquery成功范围
与其成功,不如尝试使用.done()
示例
`
$.ajax({
url:'ajax/check-availability.php',
context: this,
data:{"slot":send},
dataType:'json',
type:'get'
}).done(function(result) {
console.log(result);
if (result.status === "taken") {
$(this).addClass('taken');
};
});
`