通过HTML文件将参数从服务器端传递到Javascript


Pass Parameters from Serverside to Javascript via HTML file

如果这些参数由服务器端(Codeigniter控制器)提供给HTML,我如何将参数从HTML文件传递到外部Javascript文件?

换句话说,我有一些参数,我想从服务器端PHP/Codeigniter传递到Javascript文件。

PHP/Codeigniter Serverside Code

function view($id) {
    $data['id'] = $id;    // this is the variable I want to pass to Javascript
    $this->load->view('index', $data);
}

<html>
    <head>
        <script type="text/javascript" src="./js/targetfile.js"></script>
    </head>
    <body>
        <?php echo $id; ?> //this is how I can retrieve the variable from serverside
...

Javascript (targetfile.js)

var id = id_from_serverside;  // This is where I want the serverside $id to go

附加信息:

变量$id从url中抓取,因此对于http://www.domain.com/view/1234,服务器端变量$id将设置为值1234。然后必须将这个1234值传递给javascript文件(该文件执行AJAX回调到服务器端以从数据库检索数据)

您应该能够这样做:

<script type="text/javascript>
var id = <?php echo $id; ?> //this is how I can retrieve the variable from serverside
</script>
<script type="text/javascript" src="./js/targetfile.js"></script>

这个怎么样:

HTML

<html>
    <head>
        <script type="text/javascript" src="./js/targetfile.js"></script>
    </head>
    <body>
        <input type="hidden" id="my_id" value="<?= $id ?>" />
...
JavaScript

var id = $('#my_id').val();

试试这个:

PHP/Codeigniter Serverside Code

function view($id) {
    echo $id;
}
JavaScript

$.get('/mycontroller/view', function(data) {
    alert(data);
}, 'html');

跳过<html><head>...的东西。只需打印您需要的数据。然后通过AJAX获取数据。

您可以将参数作为JSON对象发送:

<?php 
    $object = array("foo" => "bar", 12 => true); 
    $encoded_object = json_encode($object); 
    echo '<script>var _page_params = '.$encoded_object.';</script>';
?> 

将输出如下*:

<script>var _page_params = {"foo": "bar", "12": "true"};</script>

免责声明:这台机器上没有PHP,所以可能会有拼写错误;)