e.preventDefault在laravel 5.7上不起作用 [英] e.preventDefault not working on laravel 5.7

查看:64
本文介绍了e.preventDefault在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆