由于某种原因,以下请求是作为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)
}
});
});
答案 0 :(得分:0)
我的假设,
它在内部被重定向到特定于“ en”语言的网址。
理想情况下,以“ /”开头的网址会将您带到域根目录,但在网络日志中,它是“ / en / api / conversation / createmessage”。
选项:
答案 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();
});
希望有帮助