我猜想,当请求有“noidea”时,您在获得random_idea后忘记设置cookie,或者您忘记删除
#noideas
.
也:
-
你不需要检查
!in_array($random_idea->id,$ideas)
::whereNotIn('id', $ideas)
.
-
public function idea(Request $request)
{
$ideas = [];
if(Cookie::has('ideas') && $request->input('noideas') != 'true'){
$ideas = Cookie::get('ideas');
$ideas = unserialize($ideas);
}
$random_idea = Idea::whereNotIn('id', $ideas)->inRandomOrder()->first();
if($random_idea){
$ideas[] = $random_idea->id;
Cookie::queue('ideas', serialize($ideas));
}
return $random_idea; //return json or null if no unique random idea was found
}
如果$random_idea不为空,Laravel将自动将$random_idea转换为json。然后,ajax:
$.ajax({
type: "POST",
url: "/idea",
data: { noideas: $("#noideas").val() },
success: function(response) {
if(response){ //reverse codition logic
$(".card").fadeOut(function(){
$('.cart-title').text(response.title); //I rewrite this part, because you don't need to remove element and render it every time
$('.cart-body').text(response.description);
$(this).fadeIn();
});
$("#noideas").val('false'); //remove true value
} else {
$(".card").fadeOut(function(){
$('.cart-title').text('Einde');
$('.cart-body').text('U heeft alle ideeën bekeken.');
$(this).fadeIn();
});
$("#noideas").val('true');
$("#idea").text("Start opnieuw.");
}
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
}
});