source

Javascript Array 전달 -> PHP

bestscript 2022. 10. 22. 09:32

Javascript Array 전달 -> PHP

예를 들어 다수의 요소가 포함된 javascript 배열(50~200개)이 있다고 가정해 보겠습니다.

저는 그것을 Ajax를 사용하여 PHP(준비된 스테이트먼트)로 보내고 싶습니다.현재 저는.loadphp 파일은 루프 내에 여러 번 있지만, 저는 그것을 배열로 변환하여 배열을 한 번 전송하고 싶습니다.PHP 파일을 50~200회 로드하는 대신 한 번 로드합니다.

array[i] = variable;

사용할 수 있습니다.JSON.stringify(array)배열을 JavaScript로 인코딩한 후$array=json_decode($_POST['jsondata']);검색하려면 , PHP 스크립트를 사용합니다.

AJAX 요청은 를 통해 시작된 GET 및 POST 요청과 다르지 않습니다.<form>요소.즉, $_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의 시리얼화는 보다 범용적인 솔루션입니다.

다음은 js 배열 또는 객체를 http get request 파라미터로 전송되는 php 호환 배열로 변환하는 함수입니다.

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']를 배열로 사용할 수 있습니다.호출 스크립트에 URL을 제공할 때 마음에 드는 ajax 엔진에 들어가는 방법을 찾아야 합니다.php from js.

따라서 클라이언트 측 루프를 사용하여 어레이의 2차원 배열을 구축하고 하나의 요청으로 모든 것을 PHP로 전송합니다.

서버 측에서는 각 서브 어레이에 대해 정기적으로 삽입/업데이트를 수행하는 다른 루프가 필요합니다.

javascript에서 PHP로 어레이를 전송할 수 있습니다.

Javascript...Array Sender.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 코드...어레이 리더php

<?php 

eval('$plArray = ' . $_POST['Array'] . ';');
print_r($plArray);

?>

언급URL : https://stackoverflow.com/questions/5035547/pass-javascript-array-php