2012-10-03 2 views
0

4 개의 div로 연결되는 큰 형태가 있습니다. 각 div는 단계를 나타내며, 모든 것은 하나의 형태로 묶여 있습니다. 문제는 형태가 너무 커지고 있습니다.jQuery는 큰 형태의 부분을 제출합니다

그래서 새로운 필드 (그림, 텍스트, 언어)를 추가하려면이 양식을 제출할 수있는 옵션이 있는지 궁금 해서요. 내 서버에는 게시물 당 20 개의 필드가 있으며 변경할 수 없습니다. 이 설정

+3

JSON 입력으로 서버에 보낼 수 있습니까? –

+1

@Murali 예, 이것이 최상의 솔루션이 될 것입니다. jSon에서 양식을 직렬화하십시오. – Burimi

답변

1

서버 한계가 당신을 귀찮게 경우 JSON에서 폼을 직렬화 및

$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name] !== undefined) { 
      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; 
}; 

var data = $("form#myform").serializeObject(); 
window.location = "url?data="+encodeURIComponent(data); 
서버보다

$data = json_decode($_GET["data"]); 
foreach($data as $row) 
{ 
//Do What ever you want with $row 
} 

또는 같은 하나의 매개 변수로이 전달할 수 있습니다 $ _POST를 사용해야하는 경우

var post_data = { data : data}; 
$.post('url', post_data ,function(data) { 
    console.log(data); 
}); 
+0

이것은 "파일"입력과 함께 사용할 수 있습니까? –

0

각 단계와 관련된 여러 양식을 만드는 것이 어떨까요?

+0

버튼 하나를 클릭하고 모든 것을 제출하기 때문에, mutiples 폼은 버튼을 만들고 jquery를 사용하여 각각을 제출할 수 있습니다. –

+1

모든 양식 필드를 json_encode로하면 하나의 데이터 만 게시 할 수 있습니다. : $ ('# your_form_id'). serialize() –

1

큰 json 배열에 필드 값을 압축하여 인코딩하고 jQuery.ajax로 게시 할 수 있습니다. 큰 단일 필드처럼 보일 것입니다. 서버 쪽에서는 디코딩 한 후 처리 할 수 ​​있습니다. 하지만 솔직히, 어떤 종류의 서버입니까? 나는 전에 이런 종류의 제한을 들어 본 적이 없다.

다른 해결책은 서버 측 (예 : 세션 저장소)에서 양식의 상태를 복제하고 세션 저장소의 개별 필드를 업데이트하는 ajax 호출을 작성하는 것입니다. 예 : 사용자가 필드를 떠날 때 해당 단일 필드의 값을 서버에 게시 한 다음 서버가 세션 저장소의 필드 값을 업데이트합니다.

가능한 많은 다른 솔루션이있을 수 있습니다.

0

@Cody 대답은 꽤 잘 작동하지만, 난 파일 입력에 문제가 있었다,

이 라이브러리 http://jquery.malsup.com/form/, 좋은 작품도, 나는 변경없이 파일을 제출하고 내부 배열을 지원 할 수 있었다

관련 문제