여러개의 input을 오브젝트로 만들고 싶습니다.

여러개의 input을 오브젝트로 만들고 싶습니다.

QA

여러개의 input을 오브젝트로 만들고 싶습니다.

본문

input아 아래처럼 있다고 할 때, 

비동기로 db에 저장하려고 하는데,


<input type="text" name="name[]" value="강백호"> <input type="text" name="number[]" value="10">
<input type="text" name="name[]" value="서태웅"> <input type="text" name="number[]" value="11">
<input type="text" name="name[]" value="정대만"> <input type="text" name="number[]" value="14">
<input type="text" name="name[]" value="송태섭"> <input type="text" name="number[]" value="7">

 

선수이름 | 번호

 

이렇게 한꺼번에 저장해서

 

ajax를 사용하려고 하는데

 

자바스크립트에서 객체로 어떻게 저장할 수 있을까요?

 

1줄을 객체로 만들고 배열로 데이터를 넣으면 될거 같은데

 

각각의 데이터를 자바스크립에서 어덯게 불러오는지 궁금합니다.

 

이 질문에 댓글 쓰기 :

답변 2


<?php
if (empty($_POST) == false) {
    // print_r($_POST);
    $names = $_POST['name'];
    $numbers = $_POST['number'];
    foreach ($names as $k => $v) {
        $value = $names[$k] . ' | ' . $numbers[$k];
        echo $value . PHP_EOL;
    }
    exit();
}
?>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
function make_array_data(arrname) {
    var arr = [];
    var els = document.getElementsByName(arrname);
    els.forEach(function (el, idx) {
        arr.push(el.value);
    });
    return arr;
}
function async_senddata() {
    var datas = {};
    datas['name[]'] = make_array_data('name[]');
    datas['number[]'] = make_array_data('number[]');
    
    $.ajax({
        url: location.pathname,
        method: 'POST',
        data: datas
    }).done(function (msg) {
        console.log(msg);
    });
}
</script>
<ul>
<li><input type="text" name="name[]" value="강백호"> <input type="text" name="number[]" value="10"></li>
<li><input type="text" name="name[]" value="서태웅"> <input type="text" name="number[]" value="11"></li>
<li><input type="text" name="name[]" value="정대만"> <input type="text" name="number[]" value="14"></li>
<li><input type="text" name="name[]" value="송태섭"> <input type="text" name="number[]" value="7"></li>
<li><input type="button" value="btn" onclick="async_senddata()" /></li>
</ul>

var name = [];
var number = [];
var nameInputs = document.getElementsByName("name[]");
var numberInputs = document.getElementsByName("number[]");
for (var i = 0; i < nameInputs.length; i++) {
  name.push(nameInputs[i].value);
}
for (var j = 0; j < numberInputs.length; j++) {
  number.push(numberInputs[j].value);
}
name = name.join("|");
number = number.join("|");


이렇게 배열에 담고
ajax 비동기 처리하시면됩니다.

ajax 예제는 팁게에 널려있으니 그중 원하시는걸 참조하셔서 구현하시면됩니다.

https://sir.kr/g5_tip?sca=&sfl=wr_subject%7C%7Cwr_content&stx=ajax

답변을 작성하시기 전에 로그인 해주세요.
전체 177
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT