doubi9531 2017-08-06 22:27
浏览 29
已采纳

在JavaScript代码中转义<?php?

I have to echo the below JavaScript code with using only one <?php tag. How to escape <?php inside the echo?

<script type="text/javascript">

function drawLatestTen() {
    var data = google.visualization.arrayToDataTable(<?php echo json_encode( $json ); ?>);

    var ac = new google.visualization.ComboChart(document.getElementById('ipt_dolt_ten_stat'));
    ac.draw(data, {
        title : '<?php _e( 'Last 30 days form submission statistics', 'ipt_dolt' ); ?>',
        height : 300,
        vAxis : {title : '<?php _e( 'Submission Hits', 'ipt_dolt' ) ?>'},
        hAxis : {title : '<?php _e( 'Date', 'ipt_dolt' ); ?>'},
        seriesType : 'bars',
        series : {<?php echo count( $json[0] ) - 2; ?> : {type : 'line'}},
        legend : {position : 'top'},
        tooltip : {isHTML : true}
    });
}

</script>

so the result is:

<?php echo '<script type="text/javascript">

function drawLatestTen() {
    var data = google.visualization.arrayToDataTable(<?php echo json_encode( $json ); ?>);

    var ac = new google.visualization.ComboChart(document.getElementById(\'ipt_dolt_ten_stat\'));
    ac.draw(data, {
        title : \'<?php _e( \'Last 30 days form submission statistics\', \'ipt_dolt\' ); ?>\',
        height : 300,
        vAxis : {title : \'<?php _e( \'Submission Hits\', \'ipt_dolt\' ) ?>'},
        hAxis : {title : \'<?php _e( \'Date\', \'ipt_dolt\' ); ?>\'},
        seriesType : \'bars\',
        series : {<?php echo count( $json[0] ) - 2; ?> : {type : \'line\'}},
        legend : {position : \'top\'},
        tooltip : {isHTML : true}
    }); ?>
}

</script>'; ?>
  • 写回答

2条回答 默认 最新

  • doucong1853 2017-08-06 22:39
    关注

    Mixing php / js can be a bit confusing because the quotes can intersect.

    Notice that we're using " and '. You might want to echo with " or with ' depending on what you need to accomplish. echoing with " in php allows you to use variables in the string, ie: echo "hello {$username}" the lamdas ({}) aren't required, but many devs prefer them.

    Here's an incomplete example to get you started. You just echo it all at once and concatenate with . for strings in php.

    <?php 
    $title = translate( 'Submission Hits', 'ipt_dolt' );
    $date = translate( 'Date', 'ipt_dolt' );
    echo '
    <script type="text/javascript">
    
    function drawLatestTen() {
        var data = google.visualization.arrayToDataTable( '. json_encode( $json ) .' );
    
        var ac = new google.visualization.ComboChart(document.getElementById('ipt_dolt_ten_stat'));
        ac.draw(data, {
            title : '<?php _e( 'Last 30 days form submission statistics', 'ipt_dolt' ); ?>',
            height : 300,
            vAxis : {title : "'. $tite .'"},
            hAxis : {title : "'.$date.'"}, // notice two quotes, double to denote a string in js and singles to break/concatenate the php output. (that's where things get tricky.)
            seriesType : 'bars',
            series : { '. (count( $json[0] ) - 2) .' : {type : 'line'}},
            legend : {position : 'top'},
            tooltip : {isHTML : true}
        });
    }
    </script>'; ?>
    

    Edit: Special thanks to @wh1t3h4ck5 & @jh1711 for helping me tweak this.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 怎么制作一个人脸识别门禁系统
  • ¥20 大华dss监控平台网络关闭登不进去
  • ¥15 请使用蚁群算法解决下列问题,并给出我完整的代码
  • ¥20 关于php录入完成后,批量更新数据库
  • ¥15 请教往复密封润滑问题
  • ¥15 cocos creator发布ios包
  • ¥15 comsol压电材料数据
  • ¥35 用python实现除法算法中goldschmidt算法
  • ¥15 汇编代码转换成C代码
  • ¥15 除法算法中的归一化具体是怎么变的?