У меня есть веб-сервис, который ожидает получить 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 или я что-то упустил?
На самом деле вы не отправляете JSON. Вы передаете объект в качестве данных
, но вам нужно строчить объект и передать строку вместо него.
Ваш 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);
}
});
Мне никогда не везло с таким подходом. Я всегда делаю так (надеюсь, это поможет):
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);
}
});
В настоящее время вы отправляете данные в виде типичных значений POST, которые выглядят следующим образом:
first_name=somename&last_name=somesurname
Если вы хотите отправлять данные в формате json, вам нужно создать объект с данными и строчить его.
data: JSON.stringify(someobject)