[英]error browser prevent my form - click submit button in ajax's success
[英]How to send error/success message through ajax without click submit button in form (if there isn't form) laravel?
如何通过ajax发送错误/成功消息,而无需单击表单中的提交按钮(如果没有表单)?
我在这里做一个laravel项目,当用户将表单提交给控制器时(通过表单的action属性),我使用了该方法,并且在控制器函数内部,它可以返回带有数据的视图并重定向页面,因此错误/将显示成功消息,并刷新页面。
return redirect()->back()->with('success', 'Successfully Added!');
但是情况是我想单击一个按钮,如果没有表单,也会发生同样的事情。 我在按钮上添加了onclick并运行js函数以通过ajax调用控制器。 但是在调用控制器之后,上面的代码无法像以前那样工作。 也没有错误。
<button type="button" onclick="submit()" class="btn btn-primary"
>Submit</button>
<script>
//when click submit button
function submit(){
var _token = $('input[name="_token"]').val();
$.ajax({
url: "{{ route('RecipeController.submit') }}",
type: "POST",
data: { _token:_token
}
})
}
</script>
谁能给我解决方案?
如果需要,我在下面添加了消息代码。
@if(count($errors)>0)
@foreach($errors->all() as $error)
<div class="alert alert-danger">
{{$error}}
</div>
@endforeach
@endif
@if(session('success'))
<div class="alert alert-success">
{{session('success')}}
</div>
@endif
@if(session('error'))
<div class="alert alert-danger">
{{session('error')}}
</div>
@endif
Ajax通常期望使用JSON,因此无法正常进行重定向或查看。
我可以举一个例子:
return response()->json(['error' => 'there was an error...'], 200);
第一个参数是包含数据的数组。 第二个是http状态。
希望对您的问题有所帮助。 :)
编辑:现在我有您的消息代码。
您只需在ajax成功的情况下使用js动态添加div。
$(document).ready(function() {
$(".removeproduct").click(function(){
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type : 'DELETE',
url : '/user/'+report_id+'/removefromcart',
data : {report_id : report_id},
success:function(data)
{
console.log(data);
},
error : function(data)
{
console.log(data);
}
});
});
}) ;
和路线应定义为
Route::get('/user/{id}/removefromcart','YOURCONTROLLERNAME@MethodName');
public function removeFromCart(Request $request, $report_id)
{
$return = array();
$check = DB::delete("DELETE FROM carts WHERE user_id='" . Auth::user()->user_id . "' AND report_id='" . $report_id . "'");
if ($check)
{
$count = Cart::where('user_id', Auth::user()->user_id)->count('id');
$return = array('success' => true, 'message' => 'Item removed to cart', 'data' => $count);
return response()->json($return);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.