Как POST сформировать данные в формате JSON вместо JSON с парой ключ-значение, используя AJAX / jQuery? - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть одна форма, которая использует для отправки данных формы в паре ключ-значение JSON к URL.То же, что и в следующем формате:

[{'name': 'URL', 'value': 'http://127.0.0.1:8000/test/addcustomer'}, {' name ':' FirstName ',' value ':' Abc'}, {' name ':' LastName ',' value ':' Xyz '}, {' name ':' DOB ',' value ':' 123457 '}, {' name ':' EmailAddress ',' value':' example@gmail.com '}, {' name ':' Address1 ',' value ':' 123 Street '}, {' name ':' Address2 ',' value ':' 11123 '}, {'name ':' City ',' value ':' Xyz '}, {' name ':' State ',' value ':' Pqr '}, {' name ':' PostalCode ',' value ':' 12345 '}]

Вместо этого я хочу что-то вроде ниже:

[{'URL': 'http://127.0.0.1:8000/test/addcustomer',' FirstName ':' Abc ',«LastName»: «Xyz», «DOB»: «123457», «EmailAddress»: «example@gmail.com», «Address1»: «123 Street», «Address2»: «11123», «City»: «Xyz ',' State ':' Pqr ',' PostalCode ':' 12345 '}]

Пожалуйста, используйте код ниже:

$(document).ready(function(){
    $("#submit").on('click', function(){
     var a=document.forms["myForm"]["EmailAddress"].value;
     var b=document.forms["myForm"]["URL"].value;
        if (a==null || a=="" || b==null || b=="")
        {
            $("#EmailAddress").css("border-color", "#963634");
            $("#URL").css("border-color", "#963634");
            alert("Please fill Email Address and URL!!!");
            return false;
        }
        else
        $.ajax({
            url: b, 
            type : "POST",
            data : JSON.stringify($("#myForm").serializeArray()), 
            success : function(result) {
                alert(result);
                $("#myForm")[0].reset();
            },
            error: function() {
                alert('Please enter valid URL');
            }
        })
    });
});

1 Ответ

0 голосов
/ 28 апреля 2019

Я бы попробовал что-то вроде:

        else
        {
            let formData = $("#myForm").serializeArray();
            let data = formData.reduce((acc, x) => acc[x.name] = x.value, {});
            $.ajax({
                url: b, 
                type : "POST",
                data : JSON.stringify(data), 
                success : function(result) {
                    alert(result);
                    $("#myForm")[0].reset();
                },
                error: function() {
                    alert('Please enter valid URL');
                }
            })
        }

Линия сокращения примерно эквивалентна:

// formData is in the form [ {'name': 'A', 'value': B}, {'name': 'X', 'value': Y},... ]
let data = {};
for (let item of formData)
    data[item.name] = item.value;
// data is now in the form { 'A': B, 'X': Y, ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...