[英]Action refuses to return the boolean value
我有标准的destroy
动作:
public function destroy($id)
{
return Quiz::find($id)->delete();
}
通过以下AJAX调用可以访问该文件:
// The CSRF token is included automatically!
$.ajax({
url: /quiz/10,
type: 'POST',
data: {_method: 'DELETE'},
success: function(response){
if(response){
// do stuff..
}
}
});
进行AJAX调用时,Chrome控制台显示以下错误:
奇怪的是, 如果我删除return
,那么一切都会起作用,但是我需要返回状态码。 有人可以解释为什么会这样吗? 或者,至少,如何调试此问题?
如果我这样重写destroy
动作,一切将开始正常工作:
public function destroy($id)
{
return Quiz::delete($id);
}
但是我仍然不明白为什么第一步不能奏效?
似乎Trying to get property of non-object
错误的Trying to get property of non-object
。
尝试这个
public function destroy($id)
{
return Quiz::destroy($id);
}
您不能返回布尔值( Quiz::find($id)->delete();
返回true
或false
),最好执行以下操作,
$deleted = Quiz::find($id)->delete(); //this will return true/false
return response()->json(['success' => $deleted]);
在前端
$.ajax({
url: /quiz/10,
type: 'POST',
data: {_method: 'DELETE'},
success: function(response){
if(response.success == true){
// do stuff..
} else {
// something went wrong when deleting the record.
}
}
});
你可以做这样的事情
public function destroy($id) {
$quiz = Quiz::find($id);
$quiz->delete();
if ($quiz) {
return response()->json('true');
} else {
return response()->json('false');
}
}
响应显然是一个json,如果测验已被删除,则包含true;如果出错,则返回false
我不擅长js但:
$.ajax({
url: /quiz/10,
type: 'POST',
data: {_method: 'DELETE'},
success: function(response){
if(response == 'true'){ // should work i guess
// do stuff..
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.