복붙노트

Javascript 배열 전달 -> PHP

PHP

Javascript 배열 전달 -> PHP

자바 스크립트 배열에 여러 요소가 포함되어 있다고 가정 해 봅시다 (50-200).

아약스를 사용하여 PHP (prepared statements)로 보내고 싶습니다. 현재, 루프 내에서 PHP 파일을 여러 번로드하지만 배열로 변환하여 배열을 보내고 50-200 번 대신 PHP 파일을 한 번로드합니다.

array [i] = 변수;

해결법

  1. ==============================

    1.JSON.stringify (array)를 사용하여 배열을 JavaScript로 인코딩 한 다음 $ array = json_decode ($ _ POST [ 'jsondata']); 귀하의 PHP 스크립트에서 그것을 검색 할 수 있습니다.

    JSON.stringify (array)를 사용하여 배열을 JavaScript로 인코딩 한 다음 $ array = json_decode ($ _ POST [ 'jsondata']); 귀하의 PHP 스크립트에서 그것을 검색 할 수 있습니다.

  2. ==============================

    2.AJAX 요청은
    요소를 통해 시작된 GET 및 POST 요청과 다르지 않습니다. 즉, $ _GET 및 $ _POST를 사용하여 데이터를 검색 할 수 있습니다.

    AJAX 요청은 요소를 통해 시작된 GET 및 POST 요청과 다르지 않습니다. 즉, $ _GET 및 $ _POST를 사용하여 데이터를 검색 할 수 있습니다.

    AJAX 요청을 할 때 (jQuery 예제) :

    // JavaScript file
    
    elements = [1, 2, 9, 15].join(',')
    $.post('/test.php', {elements: elements})
    

    이 양식을 게시하는 것과 (거의) 동일합니다.

    <form action="/test.php" method="post">
      <input type="text" name="elements" value="1,2,9,15">
    </form>
    

    두 경우 모두 서버 측에서 $ _POST 변수의 데이터를 읽을 수 있습니다.

    // test.php file
    
    $elements = $_POST['elements'];
    $elements = explode(',', $elements);
    

    간단히하기 위해 요소를 쉼표로 여기에 연결합니다. JSON 직렬화는보다 보편적 인 솔루션입니다.

  3. ==============================

    3.다음은 js 배열 또는 객체를 PHP 호환 배열로 변환하여 http get request 매개 변수로 전송하는 함수입니다.

    다음은 js 배열 또는 객체를 PHP 호환 배열로 변환하여 http get request 매개 변수로 전송하는 함수입니다.

    function obj2url(prefix, obj) {
            var args=new Array();
            if(typeof(obj) == 'object'){
                for(var i in obj)
                    args[args.length]=any2url(prefix+'['+encodeURIComponent(i)+']', obj[i]);
            }
            else
                args[args.length]=prefix+'='+encodeURIComponent(obj);
            return args.join('&');
        }
    

    prefix는 매개 변수 이름입니다.

    편집하다:

    var a = {
        one: two,
        three: four
    };
    
    alert('/script.php?'+obj2url('a', a)); 
    

    생산 가능

    /script.php?a[one]=two&a[three]=four
    

    script.php에서 배열로 $ _GET [ 'a']를 사용할 수 있습니다. js에서 script.php를 호출하기위한 url을 제공하면서 여러분이 좋아하는 아약스 엔진에 접근 할 방법을 찾아야 할 것이다.

  4. ==============================

    4.따라서 클라이언트 측 루프를 사용하여 배열의 2 차원 배열을 만들고 한 가지 요청으로 PHP 전체로 전송하십시오.

    따라서 클라이언트 측 루프를 사용하여 배열의 2 차원 배열을 만들고 한 가지 요청으로 PHP 전체로 전송하십시오.

    서버 측에서는 각 하위 배열에 대한 정기적 인 삽입 / 업데이트를 수행하는 다른 루프가 필요할 것입니다.

  5. ==============================

    5.자바 스크립트에서 PHP로 배열을 전송할 수 있습니다 ...

    자바 스크립트에서 PHP로 배열을 전송할 수 있습니다 ...

    Javascript ... ArraySender.html

    <script language="javascript">
    
    //its your javascript, your array can be multidimensional or associative
    
    plArray = new Array();
    plArray[1] = new Array(); plArray[1][0]='Test 1 Data'; plArray[1][1]= 'Test 1'; plArray[1][2]= new Array();
    plArray[1][2][0]='Test 1 Data Dets'; plArray[1][2][1]='Test 1 Data Info'; 
    plArray[2] = new Array(); plArray[2][0]='Test 2 Data'; plArray[2][1]= 'Test 2';
    plArray[3] = new Array(); plArray[3][0]='Test 3 Data'; plArray[3][1]= 'Test 3'; 
    plArray[4] = new Array(); plArray[4][0]='Test 4 Data'; plArray[4][1]= 'Test 4'; 
    plArray[5] = new Array(); plArray[5]["Data"]='Test 5 Data'; plArray[5]["1sss"]= 'Test 5'; 
    
    function convertJsArr2Php(JsArr){
        var Php = '';
        if (Array.isArray(JsArr)){  
            Php += 'array(';
            for (var i in JsArr){
                Php += '\'' + i + '\' => ' + convertJsArr2Php(JsArr[i]);
                if (JsArr[i] != JsArr[Object.keys(JsArr)[Object.keys(JsArr).length-1]]){
                    Php += ', ';
                }
            }
            Php += ')';
            return Php;
        }
        else{
            return '\'' + JsArr + '\'';
        }
    }
    
    
    function ajaxPost(str, plArrayC){
        var xmlhttp;
        if (window.XMLHttpRequest){xmlhttp = new XMLHttpRequest();}
        else{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
        xmlhttp.open("POST",str,true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send('Array=' + plArrayC);
    }
    
    ajaxPost('ArrayReader.php',convertJsArr2Php(plArray));
    </script>
    

    및 PHP 코드 ... ArrayReader.php

    <?php 
    
    eval('$plArray = ' . $_POST['Array'] . ';');
    print_r($plArray);
    
    ?>
    
  6. from https://stackoverflow.com/questions/5035547/pass-javascript-array-php by cc-by-sa and MIT license