Javascript 배열 전달 -> PHP
PHPJavascript 배열 전달 -> PHP
자바 스크립트 배열에 여러 요소가 포함되어 있다고 가정 해 봅시다 (50-200).
아약스를 사용하여 PHP (prepared statements)로 보내고 싶습니다. 현재, 루프 내에서 PHP 파일을 여러 번로드하지만 배열로 변환하여 배열을 보내고 50-200 번 대신 PHP 파일을 한 번로드합니다.
array [i] = 변수;
해결법
-
==============================
1.JSON.stringify (array)를 사용하여 배열을 JavaScript로 인코딩 한 다음 $ array = json_decode ($ _ POST [ 'jsondata']); 귀하의 PHP 스크립트에서 그것을 검색 할 수 있습니다.
JSON.stringify (array)를 사용하여 배열을 JavaScript로 인코딩 한 다음 $ array = json_decode ($ _ POST [ 'jsondata']); 귀하의 PHP 스크립트에서 그것을 검색 할 수 있습니다.
-
==============================
2.AJAX 요청은
-
==============================
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.따라서 클라이언트 측 루프를 사용하여 배열의 2 차원 배열을 만들고 한 가지 요청으로 PHP 전체로 전송하십시오.
따라서 클라이언트 측 루프를 사용하여 배열의 2 차원 배열을 만들고 한 가지 요청으로 PHP 전체로 전송하십시오.
서버 측에서는 각 하위 배열에 대한 정기적 인 삽입 / 업데이트를 수행하는 다른 루프가 필요할 것입니다.
-
==============================
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); ?>
from https://stackoverflow.com/questions/5035547/pass-javascript-array-php by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP - MySQL 연결이 작동하지 않음 : 2002 해당 파일이나 디렉토리가 없습니다. (0) | 2018.09.17 |
---|---|
PHP에서 업로드 된 파일 형식을 확인하는 방법 (0) | 2018.09.17 |
컨텍스트에 관계없이 SimpleXML 객체를 문자열로 강제 변환 (0) | 2018.09.17 |
PHP 경고 : 호출 시간 기준 전달은 더 이상 사용되지 않습니다. (0) | 2018.09.17 |
$ _POST를 사용하여 HTML에서 선택 옵션 값 얻기 (0) | 2018.09.17 |