[JQUERY] JSON에 직렬화 폼 데이터 [중복]
JQUERYJSON에 직렬화 폼 데이터 [중복]
해결법
-
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.이 작업을 수행 할 수 있습니다 :
이 작업을 수행 할 수 있습니다 :
함수 onSubmit (형태) { VAR 데이터 = JSON.stringify ($ (형태) .serializeArray ()); // <----------- CONSOLE.LOG (데이터); false를 반환; // 제출하지 마십시오 } <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> script>
-
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.사용하다:
사용하다:
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.나는이 도우미 기능 요구 사항을 충족하지 않는 알고 있지만 나는 이런 짓을 한 방법은 jQuery의 $의 .each () 메소드를 사용한다
나는이 도우미 기능 요구 사항을 충족하지 않는 알고 있지만 나는 이런 짓을 한 방법은 jQuery의 $의 .each () 메소드를 사용한다
var loginForm = $('.login').serializeArray(); var loginFormObject = {}; $.each(loginForm, function(i, v) { loginFormObject[v.name] = v.value; });
그럼 난 내 백엔드에 loginFormObject를 전달할 수 있습니다, 또는 당신은 userObject로를 만들고 백본) (저장뿐만 아니라 수 있습니다.
-
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.(복잡한 플러그인과 라이브러리로받지 않고 검증) 같은 문제를 해결하기 위해 노력, 나는 중첩 된 객체의 어떤 종류를 지원하기 위해 serializeArray을 향상 jQuery.serializeJSON을 만들었습니다.
(복잡한 플러그인과 라이브러리로받지 않고 검증) 같은 문제를 해결하기 위해 노력, 나는 중첩 된 객체의 어떤 종류를 지원하기 위해 serializeArray을 향상 jQuery.serializeJSON을 만들었습니다.
이 플러그인은 매우 인기가있어,하지만 난 Backbone.js 모델에서 유효성 검사 로직을 작성하고자하는 경우 다른 프로젝트에서 나는, Backbone.js을 사용하고 있었다. 그럼 난 당신이 형태로 직접 검증 메소드에 의해 반환되는 오류를 표시 할 수 있습니다 Backbone.Formwell을 만들었습니다.
-
8.이름이 같은 반복적 인 양식 요소에 대한 상관 없어 경우에, 당신은 할 수 있습니다 :
이름이 같은 반복적 인 양식 요소에 대한 상관 없어 경우에, 당신은 할 수 있습니다 :
var data = $("form.login").serializeArray(); var formData = _.object(_.pluck(data, 'name'), _.pluck(data, 'value'));
여기 Underscore.js을 사용하고 있습니다.
-
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.여기에 내가 (내 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.Underscore.js 사용 :
Underscore.js 사용 :
function serializeForm($form){ return _.object(_.map($form.serializeArray(), function(item){return [item.name, item.value]; })); }
-
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.내 기여 :
내 기여 :
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.https://github.com/macek/jquery-serialize-object : 음, 여기에 편리한 플러그인입니다
https://github.com/macek/jquery-serialize-object : 음, 여기에 편리한 플러그인입니다
그것에 대한 문제는 다음과 같습니다
-
15.하나의 가능한 도우미를 찾을 수 :
하나의 가능한 도우미를 찾을 수 :
https://github.com/theironcook/Backbone.ModelBinder
모두의 형태와 접촉 싶어하지 않는 사람들을 위해 : https://github.com/powmedia/backbone-forms
나는 첫 번째 링크에서 자세히 살펴보고 몇 가지 피드백을 제공보다됩니다 :)
from https://stackoverflow.com/questions/11338774/serialize-form-data-to-json by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] jQuery를 - 요소가 DOM에서 제거 트리거 이벤트 (0) | 2020.10.07 |
---|---|
[JQUERY] 요소 내에서 마우스 위치를 얻을 수 JQuery와 (0) | 2020.10.07 |
[JQUERY] 자바 스크립트 비동기 반환 값 / jQuery로 지정 [중복] (0) | 2020.10.07 |
[JQUERY] 하나는 전화를 대체 여러 문자를 교체 (0) | 2020.10.07 |
[JQUERY] jQuery를 사용하여 이메일 확인 (0) | 2020.10.07 |