복붙노트

[JQUERY] JSON에 직렬화 폼 데이터 [중복]

JQUERY

JSON에 직렬화 폼 데이터 [중복]

해결법


  1. 1.다음은이 사용 사례에 대한 함수는 다음과 같습니다

    다음은이 사용 사례에 대한 함수는 다음과 같습니다

    function getFormData($form){
        var unindexed_array = $form.serializeArray();
        var indexed_array = {};
    
        $.map(unindexed_array, function(n, i){
            indexed_array[n['name']] = n['value'];
        });
    
        return indexed_array;
    }
    

    용법:

    var $form = $("#form_data");
    var data = getFormData($form);
    

  2. 2.이 작업을 수행 할 수 있습니다 :

    이 작업을 수행 할 수 있습니다 :

    함수 onSubmit (형태) { VAR 데이터 = JSON.stringify ($ (형태) .serializeArray ()); // <----------- CONSOLE.LOG (데이터); false를 반환; // 제출하지 마십시오 } <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">



    <버튼 타입 = '제출'> 시도

    http://www.json.org/js.html이 참조


  3. 3.코드 아래는 당신을 도움이 될 것입니다. :)

    코드 아래는 당신을 도움이 될 것입니다. :)

     //The function is based on http://css-tricks.com/snippets/jquery/serialize-form-to-json/
     <script src="//code.jquery.com/jquery-2.1.0.min.js"></script>
    
    <script>
        $.fn.serializeObject = function() {
            var o = {};
            var a = this.serializeArray();
            $.each(a, function() {
                if (o[this.name]) {
                    if (!o[this.name].push) {
                        o[this.name] = [o[this.name]];
                    }
                    o[this.name].push(this.value || '');
                } else {
                    o[this.name] = this.value || '';
                }
            });
            return o;
        };
    
        $(function() {
            $('form.login').on('submit', function(e) {
              e.preventDefault();
    
              var formData = $(this).serializeObject();
              console.log(formData);
              $('.datahere').html(formData);
            });
        });
    </script>
    

  4. 4.사용하다:

    사용하다:

    var config = {};
    jQuery(form).serializeArray().map(function(item) {
        if ( config[item.name] ) {
            if ( typeof(config[item.name]) === "string" ) {
                config[item.name] = [config[item.name]];
            }
            config[item.name].push(item.value);
        } else {
            config[item.name] = item.value;
        }
    });
    

  5. 5.나는이 도우미 기능 요구 사항을 충족하지 않는 알고 있지만 나는 이런 짓을 한 방법은 jQuery의 $의 .each () 메소드를 사용한다

    나는이 도우미 기능 요구 사항을 충족하지 않는 알고 있지만 나는 이런 짓을 한 방법은 jQuery의 $의 .each () 메소드를 사용한다

    var loginForm = $('.login').serializeArray();
    var loginFormObject = {};
    $.each(loginForm,
        function(i, v) {
            loginFormObject[v.name] = v.value;
        });
    

    그럼 난 내 백엔드에 loginFormObject를 전달할 수 있습니다, 또는 당신은 userObject로를 만들고 백본) (저장뿐만 아니라 수 있습니다.


  6. 6.나는이 문제를 해결할 답을 찾을 수 없습니다 :

    나는이 문제를 해결할 답을 찾을 수 없습니다 :

    [{name:"Vehicle.Make", value: "Honda"}, {name:"Vehicle.VIN", value: "123"}]
    

    이것은이 객체에 대한 호출

    {Vehicle: {Make: "Honda", "VIN": "123"}}
    

    그래서이 문제를 해결 할 내 자신의 시리얼을 써야했다 :

    function(formArray){
            var obj = {};
            $.each(formArray, function(i, pair){
                var cObj = obj, pObj, cpName;
                $.each(pair.name.split("."), function(i, pName){
                    pObj = cObj;
                    cpName = pName;
                    cObj = cObj[pName] ? cObj[pName] : (cObj[pName] = {});
                });
                pObj[cpName] = pair.value;
            });
            return obj;
        }
    

    아마 누군가 도움이 될 것입니다.


  7. 7.(복잡한 플러그인과 라이브러리로받지 않고 검증) 같은 문제를 해결하기 위해 노력, 나는 중첩 된 객체의 어떤 종류를 지원하기 위해 serializeArray을 향상 jQuery.serializeJSON을 만들었습니다.

    (복잡한 플러그인과 라이브러리로받지 않고 검증) 같은 문제를 해결하기 위해 노력, 나는 중첩 된 객체의 어떤 종류를 지원하기 위해 serializeArray을 향상 jQuery.serializeJSON을 만들었습니다.

    이 플러그인은 매우 인기가있어,하지만 난 Backbone.js 모델에서 유효성 검사 로직을 작성하고자하는 경우 다른 프로젝트에서 나는, Backbone.js을 사용하고 있었다. 그럼 난 당신이 형태로 직접 검증 메소드에 의해 반환되는 오류를 표시 할 수 있습니다 Backbone.Formwell을 만들었습니다.


  8. 8.이름이 같은 반복적 인 양식 요소에 대한 상관 없어 경우에, 당신은 할 수 있습니다 :

    이름이 같은 반복적 인 양식 요소에 대한 상관 없어 경우에, 당신은 할 수 있습니다 :

    var data = $("form.login").serializeArray();
    var formData = _.object(_.pluck(data, 'name'), _.pluck(data, 'value'));
    

    여기 Underscore.js을 사용하고 있습니다.


  9. 9.당신은 JSON과 양식을 전송하는 경우에는 전송 문자열 [] 제거해야합니다. 당신은) (JQuery와 기능 serializeObject으로 그렇게 할 수 있습니다 :

    당신은 JSON과 양식을 전송하는 경우에는 전송 문자열 [] 제거해야합니다. 당신은) (JQuery와 기능 serializeObject으로 그렇게 할 수 있습니다 :

    var frm = $(document.myform);
    var data = JSON.stringify(frm.serializeObject());
    
    $.fn.serializeObject = function() {
        var o = {};
        //    var a = this.serializeArray();
        $(this).find('input[type="hidden"], input[type="text"], input[type="password"], input[type="checkbox"]:checked, input[type="radio"]:checked, select').each(function() {
            if ($(this).attr('type') == 'hidden') { //if checkbox is checked do not take the hidden field
                var $parent = $(this).parent();
                var $chb = $parent.find('input[type="checkbox"][name="' + this.name.replace(/\[/g, '\[').replace(/\]/g, '\]') + '"]');
                if ($chb != null) {
                    if ($chb.prop('checked')) return;
                }
            }
            if (this.name === null || this.name === undefined || this.name === '')
                return;
            var elemValue = null;
            if ($(this).is('select'))
                elemValue = $(this).find('option:selected').val();
            else elemValue = this.value;
            if (o[this.name] !== undefined) {
                if (!o[this.name].push) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(elemValue || '');
            } else {
                o[this.name] = elemValue || '';
            }
        });
        return o;
    }
    

  10. 10.여기에 내가 (내 formhelper.js에서) 모듈로이 상황에 사용하는 것입니다 :

    여기에 내가 (내 formhelper.js에서) 모듈로이 상황에 사용하는 것입니다 :

    define(function(){
        FormHelper = {};
    
        FormHelper.parseForm = function($form){
            var serialized = $form.serializeArray();
            var s = '';
            var data = {};
            for(s in serialized){
                data[serialized[s]['name']] = serialized[s]['value']
            }
            return JSON.stringify(data);
        }
    
        return FormHelper;
    });
    

    그것은 일종의 내가하고 싶은 일을 할 수있는 또 다른 방법을 찾을 수 없습니다 것을 안됐다.

    이것은 나를 위해이 JSON을 반환하지 :

    {"first_name":"John","last_name":"Smith","age":"30"}
    

  11. 11.Underscore.js 사용 :

    Underscore.js 사용 :

    function serializeForm($form){
        return _.object(_.map($form.serializeArray(), function(item){return [item.name, item.value]; }));
    }
    

  12. 12.jQuery를 사용 JSON 포맷으로 폼 데이터를 serializeArray 다음 직렬화 코드를 피하고 보낸다

    jQuery를 사용 JSON 포맷으로 폼 데이터를 serializeArray 다음 직렬화 코드를 피하고 보낸다

    $("#commentsForm").submit(function(event){
        var formJqObj = $("#commentsForm");
        var formDataObj = {};
        (function(){
            formJqObj.find(":input").not("[type='submit']").not("[type='reset']").each(function(){
                var thisInput = $(this);
                formDataObj[thisInput.attr("name")] = thisInput.val();
            });
        })();
        $.ajax({
            type: "POST",
            url: YOUR_URL_HERE,
            data: JSON.stringify(formDataObj),
            contentType: "application/json"
        })
        .done(function(data, textStatus, jqXHR){
            console.log("Ajax completed: " + data);
        })
        .fail(function(jqXHR, textStatus, errorThrown){
            console.log("Ajax problem: " + textStatus + ". " + errorThrown);
        });
        event.preventDefault();
    });
    

  13. 13.내 기여 :

    내 기여 :

    function serializeToJson(serializer){
        var _string = '{';
        for(var ix in serializer)
        {
            var row = serializer[ix];
            _string += '"' + row.name + '":"' + row.value + '",';
        }
        var end =_string.length - 1;
        _string = _string.substr(0, end);
        _string += '}';
        console.log('_string: ', _string);
        return JSON.parse(_string);
    }
    
    var params = $('#frmPreguntas input').serializeArray();
    params = serializeToJson(params);
    

  14. 14.https://github.com/macek/jquery-serialize-object : 음, 여기에 편리한 플러그인입니다

    https://github.com/macek/jquery-serialize-object : 음, 여기에 편리한 플러그인입니다

    그것에 대한 문제는 다음과 같습니다


  15. 15.하나의 가능한 도우미를 찾을 수 :

    하나의 가능한 도우미를 찾을 수 :

    https://github.com/theironcook/Backbone.ModelBinder

    모두의 형태와 접촉 싶어하지 않는 사람들을 위해 : https://github.com/powmedia/backbone-forms

    나는 첫 번째 링크에서 자세히 살펴보고 몇 가지 피드백을 제공보다됩니다 :)

  16. from https://stackoverflow.com/questions/11338774/serialize-form-data-to-json by cc-by-sa and MIT license