2011-09-27 4 views
1

jQuery ajax로 양식을 처리하고 있습니다.
나는 다음과 같은 jQuery 코드가 있습니다양식 필드별로 jQuery 아약스 데이터

$.ajax({ 
    url: 'formprocess.php', 
    type: 'post', 
    data: $('#myForm input[type=\'text\']'), 
    dataType: 'json', 
    success: function(json) { alert('pass'); } 
}); 

을 그리고 내 양식은 다음과 같습니다

<form id="myForm"> 
    <input type="text" name="parent[47]child[230][26]" value="1" /> 
    <input type="text" name="parent[47]child[230][27]" value="2" /> 
    <input type="text" name="parent[28]child[231][29]" value="3" /> 
    <input type="text" name="parent[28]child[231][31]" value="4" /> 
</form> 

그리고 아약스를 통해 폼 게시물에 대한 잘 작동합니다. PHP는 측면에서

는 그것으로 나타난다 :

$_POST 
: array = 
    parent: array = 
    47: array = 
     child: array = 
     230: array = 
      26: string = "1" 
      27: string = "2" 
    28: array = 
     child: array = 
     231: array = 
      29: string = "3" 
      31: string = "4" 

그러나 나는 그것이 루프와 별도로 각 부모를 통과하도록 자바 스크립트 쪽을 분리하고 싶습니다. 따라서이 경우에는 두 번 다시 게시 할 것입니다 :

$_POST 
: array = 
    parent_id = 47 
    child: array = 
     230: array = 
     26: string = "1" 
     27: string = "2" 

$_POST 
: array = 
    parent_id = 28 
    child: array = 
     231: array = 
     29: string = "3" 
     31: string = "4" 

을 그래서 내가 사용할 필요가 있다고 생각 :

$('#myForm input[type=\'text\']').each(function(i, tbox) { 
    tboxname = tbox.attr('name'); 
    var myregexp = /parent\[(\d+)\]child\[(\d+)\]\[(\d+)\]/; 
    var match = myregexp.exec(tboxname); 
    var parent_id = match[1]; 
    var child = 'child['+match[2]+']['+match[3]+']'; 
} 

을하지만 지금은 두 문자열 값을 가지고 잃었다 내 목표와 가치.

답변

1

당신이 맞아요 -이 경우 .each()를 사용하여 올바른 방법입니다,하지만 당신이 각 input 요소를 반복 드리겠습니다, 정말 각각에 대한 name 속성 내부의 "배열"에 대해 아무것도 알 수 없습니다 하나. 여기가 당신의 주요 문제인 것 같습니다. javascript는 name 매개 변수의 값을 문자열로보고 값 배열이 아닙니다.

나는이 점을 js의 관점에서 다차원 배열로 생각하지 않을 것입니다 ... each()는 구문 분석을 위해 자신 만의 논리를 고안해야하는 요소 목록을 보게 될 것입니다.

은 여기에 ... 내가 시도 할 것입니다 무엇

var parsedData = {}; 
$('#myForm input[type=\'text\']').each(function(i){ 
    var thisInput = $(this); 
    var thisName = $(this).attr('name'); 

    // parse your string here, by using conditional statements or maybe by using eval() 
    // ... This is where "your own logic" mentioned above would go =) 

    parsedData.["someValue"+i] = thisInput.val(); 
}); 

... 그리고 여기에서 당신은 당신의 $.ajax 전화로 전달하는 parsedData VAR를 사용합니다.

희망이 있습니다.

+0

분명히 저를 가졌습니다. 나는 그것을 구별하고 내 parent_id 변수를 얻었다. 하지만 이제 나머지 데이터를 배열로 다시 전달하는 방법은 무엇입니까? – Dss

+0

흠 ... 원래 질문을 수정할 수 있습니까? 다중 차원'자식 배열 '에 관해서는, 실제로 각각의 배열 전체를 전달해야합니까, 아니면 PHP로 돌아 가기 위해 숫자가 필요합니까? 전자의 경우 배열에 어떤 종류의 데이터가 필요한지 알면 도움이됩니다. 그것이 후자라면,'name' 문자열의 값을'Regex' (또는'String.split()') 할 수 있고 PHP로 객체로 게시 할 수 있습니까? 즉. '{ 'parent': 123, 'child': [230,26], 'string': 3}'? – Chazbot

+0

내 질문을 다시 수정했습니다. – Dss