자바 스크립트 함수에 PHP 배열 전달 [duplicate]
PHP자바 스크립트 함수에 PHP 배열 전달 [duplicate]
JavaScript 변수에 PHP 배열 변수를 가져 오려고합니다.
이것은 내 코드입니다.
<html>
<head>
<script type="text/javascript">
function drawChart(row,day,week,month,date)
{
// Some code...
}
</script>
</head>
<body>
<?php
for($counter = 0; $counter<count($au); $counter++)
{
switch($au[$counter]->id)
{
case pageID.'/insights/page_active_users/day':
$day[] = $au[$counter]->value;
break;
case pageID.'/insights/page_active_users/week':
$week[] = $au[$counter]->value;
break;
case pageID.'/insights/page_active_users/month':
$month[] = $au[$counter]->value;
break;
}
}
?>
<script>
drawChart(600/50, '<?php echo $day; ?>', '<?php echo $week; ?>', '<?php echo $month; ?>', '<?php echo createDatesArray(cal_days_in_month(CAL_GREGORIAN, date('m',strtotime('-1 day')), date('Y',strtotime('-1 day')))); ?>');
</script>
</body>
</html>
나는 PHP 배열의 가치를 얻을 수 없다.
이 문제를 어떻게 수정합니까?
해결법
-
==============================
1.JSON을 사용하십시오.
JSON을 사용하십시오.
다음 예제에서 $ php_variable은 모든 PHP 변수가 될 수 있습니다.
<script type="text/javascript"> var obj = <?php echo json_encode($php_variable); ?>; </script>
코드에서 다음과 같이 사용할 수 있습니다.
drawChart(600/50, <?php echo json_encode($day); ?>, ...)
(AJAX 요청에서와 같이) JSON 문자열에서 객체를 파싱해야하는 경우 안전한 방법은 JSON.parse (..)를 사용하는 것입니다.
var s = "<JSON-String>"; var obj = JSON.parse(s);
-
==============================
2.json_encode PHP 함수를 사용하여 PHP 배열을 JavaScript에 전달할 수 있습니다.
json_encode PHP 함수를 사용하여 PHP 배열을 JavaScript에 전달할 수 있습니다.
<?php $phpArray = array( 0 => "Mon", 1 => "Tue", 2 => "Wed", 3 => "Thu", 4 => "Fri", 5 => "Sat", 6 => "Sun", ) ?> <script type="text/javascript"> var jArray = <?php echo json_encode($phpArray); ?>; for(var i=0; i<jArray.length; i++){ alert(jArray[i]); } </script>
-
==============================
3.두 플랫폼 간의 데이터 전송에는 공통 데이터 형식이 필요합니다. JSON은 교차 플랫폼 데이터를 보내는 공통 전역 형식입니다.
두 플랫폼 간의 데이터 전송에는 공통 데이터 형식이 필요합니다. JSON은 교차 플랫폼 데이터를 보내는 공통 전역 형식입니다.
drawChart(600/50, JSON.parse('<?php echo json_encode($day); ?>'), JSON.parse('<?php echo json_encode($week); ?>'), JSON.parse('<?php echo json_encode($month); ?>'), JSON.parse('<?php echo json_encode(createDatesArray(cal_days_in_month(CAL_GREGORIAN, date('m',strtotime('-1 day')), date('Y',strtotime('-1 day'))))); ?>'))
귀하의 질문에 대한 답변입니다. 대답은 매우 복잡해 보일 수 있습니다. 여기서는 서버 측과 클라이언트 측 간의 통신을 설명하는 간단한 예제를 볼 수 있습니다.
$employee = array( "employee_id" => 10011, "Name" => "Nathan", "Skills" => array( "analyzing", "documentation" => array( "desktop", "mobile" ) ) );
JSON 형식으로 변환하면 데이터를 클라이언트 응용 프로그램 (예 : JavaScript)으로 다시 보내야합니다. PHP에는 json_encode () 함수가 내장되어있어 모든 데이터를 JSON 형식으로 변환 할 수 있습니다. json_encode 함수의 출력은 다음과 같은 문자열입니다.
{ "employee_id": 10011, "Name": "Nathan", "Skills": { "0": "analyzing", "documentation": [ "desktop", "mobile" ] } }
클라이언트 측에서 성공 함수는 JSON 문자열을 가져옵니다. Javascript에는 JSON 객체로 문자열을 다시 변환 할 수있는 JSON 구문 분석 함수 JSON.parse ()도 있습니다.
$.ajax({ type: 'POST', headers: { "cache-control": "no-cache" }, url: "employee.php", async: false, cache: false, data: { employee_id: 10011 }, success: function (jsonString) { var employeeData = JSON.parse(jsonString); // employeeData variable contains employee array. });
-
==============================
4.다음 예제에서는 PHP 배열을 사용하고 PHP 배열을 사용하여 JavaScript 배열을 만듭니다.
다음 예제에서는 PHP 배열을 사용하고 PHP 배열을 사용하여 JavaScript 배열을 만듭니다.
<script type="javascript"> day = new Array(<?php echo implode(',', $day); ?>); week = new Array(<?php echo implode(',',$week); ?>); month = new Array(<?php echo implode(',',$month); ?>); <!-- Then pass it to the JavaScript function: --> drawChart(<?php echo count($day); ?>, day, week, month); </script>
from https://stackoverflow.com/questions/4885737/pass-a-php-array-to-a-javascript-function by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
LIKE 문을 사용하여 PDO 매개 변수가있는 쿼리를 만드는 방법은 무엇입니까? (0) | 2018.09.10 |
---|---|
반복 날짜를 기억하는 방법 일광 절약 시간제 (0) | 2018.09.10 |
텍스트의 URL을 HTML 링크로 바꾸기 (0) | 2018.09.10 |
PDO MySQL : PDO :: ATTR_EMULATE_PREPARES를 사용하거나 사용하지 않습니까? (0) | 2018.09.10 |
PHP 날짜 시간 이후로 경과 된 시간을 찾는 방법은 무엇입니까? [복제] (0) | 2018.09.10 |