JQuery Ajax: запрос POST отправляется как GET - PullRequest
0 голосов
/ 22 марта 2019

По какой-то причине следующий запрос отправляется как запрос GET, а не как POST. Однако, если я немного изменю URL, запрос будет POST. Я надеюсь, что кто-то может объяснить мне, что я делаю неправильно.

$("#sendMessageForm").submit(function(e){
            e.preventDefault();
            $.ajax({
                url: "/api/conversation/createmessage",
                data: $(this).serialize() + "&q={{ conversation_id }}",
                method: "POST",
                success: function(data){
                    console.log('success');
                },
                error: function(data){
                    console.log("error")
                    console.log(data)
                }
            });
        });

Request is send as GET При изменении URL:

request send as post

Ответы [ 3 ]

0 голосов
/ 22 марта 2019

Вы передаете данные в виде строки запроса, которую вам следует избегать. Передайте данные из AJAX, как показано ниже:

        $.ajax({
            url: "/api/conversation/createmessage",
            data: {
               'formData': $(this).serialize()                 
               'q': {{ conversation_id }} 
            },
            method: "POST",
            success: function(data){
                console.log('success');
            },
            error: function(data){
                console.log("error")
                console.log(data)
            }
        });

Надеюсь, это поможет вам.

0 голосов
/ 22 марта 2019

Во-первых, вы используете метод POST для отправки формы и передачи данных в виде строки запроса, которая делает ошибку.Исправьте это, как показано ниже:

     // where data is an array of your input values and param 
    //can be a extra param you want to send or even a function (conversation_id in this case)
           __Ajax_call(data,url,param) {

                return  $.ajax({
                                url: url,
                                method: "POST",
                                data: {
                                data:data, q: param
                                     }
                            })
                 }

А затем:

         $("#sendMessageForm").submit(function(e){
             var data = {
                        name: $("#id").value(),
                        ..............
                        }
             var param = conversation_id;
                     __Ajax_call(data,url,param)
                        .done(function(response){
                        console.log(response);
                        }).fail(function(response){
                        console.log(response);
                        })
                       e.preventDefault();
                    });

Надеюсь, это поможет

0 голосов
/ 22 марта 2019

Моя гипотеза,

Внутренне перенаправляется на "en" специфичный для языка URL.

URL, начинающийся с "/", в идеале приведет вас к корневому каталогу домена, но в сетевом журнале это "/en/api/conversation/createmessage".

Параметры:

  1. Удалить внутреннее перенаправление (для проверки моей гипотезы)
  2. Непосредственно поместите префикс языка как часть URL "/ en / api / разговор / createmessage"
  3. Вы также можете зарегистрироваться в каком-нибудь клиенте отдыха, вы должны увидеть ответ перенаправления.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...