jQuery Ajax:POST请求作为GET发送

时间:2019-03-22 17:41:11

标签: jquery ajax

由于某种原因,以下请求是作为GET请求而不是POST发送的。但是,如果我稍微更改网址,则请求将是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 更改网址时:

request send as post

3 个答案:

答案 0 :(得分:0)

我的假设,

它在内部被重定向到特定于“ en”语言的网址。

理想情况下,以“ /”开头的网址会将您带到域根目录,但在网络日志中,它是“ / en / api / conversation / createmessage”。

选项:

  1. 删除内部重定向(以验证我的假设)
  2. 直接将语言前缀作为url“ / en / api / conversation / createmessage”的一部分
  3. 您还可以签入一些其他客户端,您应该会看到重定向响应。

答案 1 :(得分:0)

您将数据作为查询字符串传递,需要避免。从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)
            }
        });

希望它对您有帮助。

答案 2 :(得分:0)

第一件事,您正在使用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();
                    });

希望有帮助