2012-09-25 4 views
0

입력에서 데이터를 가져 와서 게시하는 더 좋은 방법이 있는지 궁금합니다. 나는 잘 작동하는이 코드를 여기에 가지고 있지만, 나는 그것을 합리화하기 위해 할 수있는 일이 더 있는지 알고 싶다.양식에서 데이터 가져 오기 후 Jquery를 사용하여 게시

$('#Subscription').submit(function(e){ 
    var url = $(this).attr('action'), 
     1 = $('input[name=1]').val(), 
     2 = $('input[name=2]').val(), 
     3 = $('input[name=3]').val(), 
     4 = $('input[name=4]').val(), 
     5 = $('input[name=5]').val(), 
     6 = $('input[name=6]').val(), 

    $.post(url, { 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6 }, function (data) { 
     // Do something after post 
    }); 

    e.preventDefault(); 
}); 
+0

그 코드가 작동합니까? 숫자를 변수 이름으로 사용 하시겠습니까? 그것은 ...해서는 안됩니다. – MrOBrian

답변

2

http://api.jquery.com/serialize/

예를보십시오 : 당신은 양식이 아닌 내부의 입력 요소가있는 경우

$('#Subscription').submit(function(e){ 
    var url = $(this).attr('action'), 
    var formData= $(this).serialize(); 

    $.post(url, data:formData, function (data) { 
     // Do something after post 
    }); 

    e.preventDefault(); 
}); 
0

또한, 다음과 같은 코드를보십시오.

<div id="form_clone"> 
    <input name="name" /> 
    <input name="id" /> 
    <input name="contact_details" /> 
    <input name="info" /> 
</div> 

'직렬화'기능은 형태 내부의 입력 필드를 얻을 수 있지만,이 요소 내에 입력 요소의 값을 얻으려면 다음 사용

(function($) { 

    $.fn.serializeAnything = function() { 

     var toReturn = []; 
     var els   = $(this).find(':input').get(); 

     $.each(els, function() { 
      if (this.name && !this.disabled && (this.checked || /select|textarea/i.test(this.nodeName) || /text|hidden|password/i.test(this.type))) { 
       var val = $(this).val(); 
       toReturn.push(encodeURIComponent(this.name) + "=" + encodeURIComponent(val)); 
      } 
     }); 

     return toReturn.join("&").replace(/%20/g, "+"); 

    } 

})(jQuery); 

사용법 :

$('#form_clone').serializeAnything() 
관련 문제