e.preventDefault在laravel 5.7上不起作用 [英] e.preventDefault not working on laravel 5.7
问题描述
我正在做聊天应用程序Laravel 5.7,并且在使用jQuery AJAX函数时遇到了挑战.
I'm doing chat app Laravel 5.7 and having a challenge with jQuery AJAX function.
我正在使用PHP 7.1.9版和jQuery 3.x版.
I'm using PHP version 7.1.9 with 3.x version of jQuery.
这是我的带有AJAX请求的表格:
Here's my form with the AJAX request:
<form action="/channels/{{$channel->id}}" method="POST">
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
<input type="hidden" name="user_id" value="{{Auth::user()->id}}" />
<input type="hidden" name="channel_id" value="{{$channel->id}}" />
<input type="hidden" name="user" value="{{Auth::user()->name}}" />
<input type="text" name="msg" class="form-control msg" />
<input type="submit" value="Envoyer" class="btn send-msg" />
</form>
<script type="text/javascript">
$(document).ready(function() {
$.ajaxSetup({
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content")
}
});
$(".send-msg").click(function(e) {
e.preventDefault();
var user_id = $("input[name='user_id']").val();
var channel_id = $("input[name='channel_id']").val();
var user = $("input[name='user']").val();
var msg = $("input[name='msg']").val();
$.ajax({
type: "POST",
url: "/channels/{{$channel->id}}",
data: {
msg: msg,
user: user,
channel_id: channel_id,
user_id: user_id
},
success: function(data) {
alert(data.success);
}
});
});
});
</script>
还有我的PHP代码:
public function sendmessage(Request $request){
$message = new Messages();
$message->channel_id = $request->channel_id;
$message->user_id = $request->user_id;
$message->username = $request->user;
$message->message = $request->msg;
$message->save();
return response()->json(['success'=>'Got Simple Ajax Request.']);
}
通常,它应该发布带有数据的警报,但实际上,它使用json : success: Got Simple Ajax Request
Normally, it should post an alert with data, but actually, it redirect me to /channels/{id}
with json : success: Got Simple Ajax Request
我在做什么错,我该如何解决?
What am I doing wrong and how can I fix it?
推荐答案
我终于找到了解决方案!它不是来自ajax,而是来自表单,实际上在我的表单中我有以下内容:
i finnally found the solution ! It was not from the ajax but the form, in fact in my form I had this:
<form action="/channels/{{$channel->id}}" method="POST">
我替换为
<form>
现在它可以完美运行了!谢谢大家 !爱你!
And now it works perfectly ! Thanks everybody ! Love ya !
这篇关于e.preventDefault在laravel 5.7上不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!