Формат jQuery AJAX и json
У меня есть веб-сервис, который ожидает получить json, например:
{"first_name":"test","last_name":"teste","email":"[email protected]","mobile":"+44 22 2222 2222", "password":"testing"}
Мой вызов ajax в jquery:
$.ajax({
type: "POST",
url: hb_base_url + "consumer",
contentType: "application/json",
dataType: "json",
data: {
first_name: $("#namec").val(),
last_name: $("#surnamec").val(),
email: $("#emailc").val(),
mobile: $("#numberc").val(),
password: $("#passwordc").val()
},
success: function(response) {
console.log(response);
},
error: function(response) {
console.log(response);
}
});
Есть ли способ проверить формат отправки моих данных? Я предположительно не отправляю правильный JSON на сервер (это первый шаг в проверке).
Мой код jquery отправляет действительный JSON или я что-то пропустил?
Ответы
Ответ 1
На самом деле вы не отправляете JSON. Вы передаете объект как data
, но вам нужно укрепить объект и передать строку вместо этого.
Ваш dataType: "json"
сообщает jQuery, что вы хотите, чтобы он обрабатывал возвращенный JSON, это не означает, что jQuery автоматически подкрепляет ваши данные запроса.
Изменить на:
$.ajax({
type: "POST",
url: hb_base_url + "consumer",
contentType: "application/json",
dataType: "json",
data: JSON.stringify({
first_name: $("#namec").val(),
last_name: $("#surnamec").val(),
email: $("#emailc").val(),
mobile: $("#numberc").val(),
password: $("#passwordc").val()
}),
success: function(response) {
console.log(response);
},
error: function(response) {
console.log(response);
}
});
Ответ 2
Мне никогда не удавалось с этим подходом. Я всегда это делаю (надеюсь, это помогает):
var obj = {};
obj.first_name = $("#namec").val();
obj.last_name = $("#surnamec").val();
obj.email = $("#emailc").val();
obj.mobile = $("#numberc").val();
obj.password = $("#passwordc").val();
Затем в вашем ajax:
$.ajax({
type: "POST",
url: hb_base_url + "consumer",
contentType: "application/json",
dataType: "json",
data: JSON.stringify(obj),
success: function(response) {
console.log(response);
},
error: function(response) {
console.log(response);
}
});
Ответ 3
В настоящее время вы отправляете данные как обычные значения POST, которые выглядят следующим образом:
first_name=somename&last_name=somesurname
Если вы хотите отправить данные как json, вам нужно создать объект с данными и подстроить его.
data: JSON.stringify(someobject)