#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)
}
});
});
Комментарии:
1. проверьте переменную в резервной копии, восстанавливается ли она как значения параметра value из запроса, потому что, если вы отправляете данные в ключе data в ajax, вам нужно получить значение из запроса..
Ответ №1:
Моя гипотеза,
Он внутренне перенаправляется на URL, зависящий от языка «en».
URL, начинающийся с «/», в идеале привел бы вас к корню домена, но в сетевом журнале это «/ en / api /conversation/createmessage».
Опции:
- Удалите внутреннее перенаправление (для проверки моей гипотезы)
- Напрямую добавляйте языковой префикс как часть URL-адреса «/en /api/conversation/createmessage»
- Вы также можете проверить в каком-нибудь 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();
});
Надеюсь, это поможет