jQuery Ajax: отправка POST-запроса как GET

#jquery #ajax

#jquery #ajax

Вопрос:

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

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

Запрос отправляется как GET
При изменении URL:

запрос отправляется как post

Комментарии:

1. проверьте переменную в резервной копии, восстанавливается ли она как значения параметра value из запроса, потому что, если вы отправляете данные в ключе data в ajax, вам нужно получить значение из запроса..

Ответ №1:

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

Он внутренне перенаправляется на URL, зависящий от языка «en».

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

Опции:

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

Ответ №2:

Вы передаете данные в виде строки запроса, чего вам нужно избегать. Передача данных из 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)
            }
        });
  

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

Ответ №3:

Во-первых, вы используете метод 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();
                    });
  

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