2017-12-13 1 views
0

는 내 입력 필드에 의해 배열을 만들고 아약스를 통해이 배열을 보낼 :Ajax를 통해 입력 필드 묶음으로 생성 된 배열을 보내려면 어떻게해야합니까?

var map = {}; 
 
$(".data_list").each(function() { 
 
    map[$(this).attr("name")] = $(this).val(); 
 
}); 
 

 
alert(map.id); 
 
data = map; 
 

 

 
$.ajax({ 
 
      url: "update.php", 
 
      data: { 
 
       data: data, 
 
      }, 
 
      type: "POST", 
 
      success: function (data) { 
 
      alert("success"); 
 
      } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class='data_list' name='id[]" + "' type='text' value='24'/> 
 
<input class='data_list' name='name[]" + "' type='text' value='test'/>

하지만 내 경보 테스트가 정의되지 않은 때문에 내 배열이 제대로 생성되지 않습니다 생각합니다.

+1

다음 속성 ID가 –

답변

1

전송할 값이있는 양식 컨트롤에서 jQuery https://api.jquery.com/serialize/ 메서드를 사용하고 결과를 data 매개 변수로 전달하십시오. 예 :

$.ajax({ data: $(".data_list").serialize(), 
      /* url: ... etc .*./ }); 
+0

정의되지 않도록 여기뿐만 아니라') BTW 난 당신이 속기'$ .post를 (사용할 수 있다고 생각, 입력 포함 []의 이름을 대신 '$ .ajax()' – David

1

먼저 입력 이름에 "+"가 추가됩니다. 둘째, 이름에 []이 (가) 포함되어 있으므로 데이터를 보낼 때 obj[attribute]처럼 연관 배열에 액세스해야합니다. []을 포함하면 서버 측에서 배열로 구문 분석 할 수 있습니다.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class='data_list' name='id[]' type='text' value='24'/> 
 
<input class='data_list' name='name[]' type='text' value='test'/>
var map = {}; 
 
$(".data_list").each(function() { 
 
\t \t console.log($(this).attr("name")); 
 
    map[$(this).attr("name")] = $(this).val(); 
 
}); 
 

 
alert(map["id[]"]); 
 
data = map; 
 

 

 
$.ajax({ 
 
      url: "update.php", 
 
      data: { 
 
       data: data, 
 
      }, 
 
      type: "POST", 
 
      success: function (data) { 
 
      alert("success"); 
 
      } 
 
})

관련 문제