Формат jQuery AJAX и json - программирование
Подтвердить что ты не робот

Формат 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 или я что-то пропустил?

4b9b3361

Ответ 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)