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
'source' 카테고리의 다른 글
| 스파크 SQL JDBC에서 열 이름만 반환 (0) | 2022.10.23 |
|---|---|
| 이 JavaScript 관용어의 기초는 무엇입니까: var self = this? (0) | 2022.10.23 |
| jQuery 직렬화된 폼을 PHP 직렬화 해제하려면 어떻게 해야 합니까? (0) | 2022.10.22 |
| 날짜에 하루 추가 (0) | 2022.10.22 |
| 해싱 사전? (0) | 2022.10.22 |