laravel ajax post serialize не работает

-2

                    <form id="sendmemessage">
                            <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
                            <div class="form-group">
                                <h2 class="open-f bbold green-text contact-t">SEND ME A MESSAGE!</h2>
                            </div>
                            <div class="form-group">
                                <input type="text" name="name" class="form-control input-sm no-radius" aria-describedby="emailHelp" placeholder="Name">
                            </div>
                            <div class="form-group">
                                <input type="text" name="email" class="form-control input-sm no-radius" placeholder="Email">
                            </div>
                            <div class="form-group">
                                <input type="text" name="subject" class="form-control input-sm no-radius" placeholder="Subject">
                            </div>
                            <div class="form-group">
                                <textarea class="form-control input-sm no-radius" name="message" rows="5" placeholder="Message"></textarea>
                            </div>
                            <div class="form-group">
                                <button type="submit" class="btn btn-custom pull-right btn-w">Send Message</button>
                            </div>
                            <br>
                    </form>

Я пытаюсь подчинить значения формы, я знаю, что это просто базовый, но я не знаю, почему это не работает.

ниже мой аякс,

$("#sendmemessage").submit(function(stay){
    $.ajax({
        type: 'POST',
        url: "{{ url('/') }}/message_me",
        data: $(this).serialize(),
        success: function (data) {
           alert();
        },
    });
    stay.preventDefault(); 
});

мой маршрут

Route::post('message_me','home_controller@message_me');

мой контроллер

class home_controller extends Controller{

    public function message_me(){

        echo "its here!";

    }

}

вот мой код формы формы

  • 0
    Откройте консоль разработчика и проверьте ошибки
  • 0
    POST 127.0.0.1:8000/message_me 500 (внутренняя ошибка сервера)
Показать ещё 1 комментарий
Теги:

2 ответа

1
Лучший ответ

$(this).serialize() был внутри объекта ajax, и он ссылается на ajax не на форму.

$("#sendmemessage").submit(function(stay){
   var formdata = $(this).serialize(); // here $(this) refere to the form its submitting
    $.ajax({
        type: 'POST',
        url: "{{ url('/') }}/message_me",
        data: formdata, // here $(this) refers to the ajax object not form
        success: function (data) {
           alert();
        },
    });
    stay.preventDefault(); 
});
  • 0
    Это не вызывает 500 ошибок.
  • 0
    все еще не работает, сэр,
Показать ещё 10 комментариев
0

Начните с замены

<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">

с вспомогательной функцией

{!! csrf_field() !!}

Я строю свои вызовы ajax следующим образом:

$("#sendmemessage").on('submit', function(e) {
    e.preventDefault();
    var data = $("#sendmessage").serialize();
    $.ajax({
        type: "post",
        url: "/message_me",
        data: data,
        dataType: "json",
        success: function(data) {
            console.log('success');
        },
        error: function(error) {
            console.log('error');
        }
    });
});

Можете ли вы получить доступ к маршруту "message_me" через браузер? Внутренняя ошибка сервера 500 должна дать вам четкое представление о том, почему запрос терпит неудачу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню