JavaScript 함수에 PHP 배열을 전달합니다.
PHP 배열 변수를 JavaScript 변수로 가져오려고 합니다.
코드는 다음과 같습니다.
<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 배열의 값을 가져올 수 없습니다.
이 문제를 해결하려면 어떻게 해야 하나요?
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);
PHP 어레이를 JavaScript에 전달할 수 있습니다.json_encode
PHP 함수
<?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>
두 플랫폼 간의 데이터 전송에는 공통 데이터 형식이 필요합니다.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"
)
)
);
데이터를 클라이언트 애플리케이션인 JavaScript로 되돌리려면 JSON 형식으로 변환해야 합니다.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.
});
다음 예제에서는 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>
언급URL : https://stackoverflow.com/questions/4885737/pass-a-php-array-to-a-javascript-function
'programing' 카테고리의 다른 글
Mysql/Mariadb delete Query는 트랜잭션입니까?그리고 엄청난 수의 행에 대한 퍼포먼스? (0) | 2022.11.21 |
---|---|
여러 테이블에서 LOCK TABLES (0) | 2022.11.21 |
중첩된 JavaScript 개체를 평탄화/평탄화 해제하는 가장 빠른 방법 (0) | 2022.11.21 |
문자열 매개 변수를 정수 열에 암묵적으로 캐스팅하는 MariaDB 10.3 실패 (0) | 2022.11.21 |
"glob" 유형 패턴에 대해 java.util.regex와 동등한 것이 있습니까? (0) | 2022.11.21 |