programing

JavaScript 함수에 PHP 배열을 전달합니다.

yoursource 2022. 11. 21. 23:02
반응형

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_encodePHP 함수

<?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

반응형