【问题标题】:Pass Parameters from Serverside to Javascript via HTML file通过 HTML 文件将参数从服务器端传递到 Javascript
【发布时间】:2011-12-24 17:12:38
【问题描述】:

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

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

PHP/Codeigniter 服务器端代码

function view($id) {

    $data['id'] = $id;    // this is the variable I want to pass to Javascript

    $this->load->view('index', $data);

}

HTML

<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 回调到服务器端以从数据库中检索数据)

【问题讨论】:

    标签: php javascript jquery codeigniter


    【解决方案1】:

    你应该可以这样做:

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

    【讨论】:

      【解决方案2】:

      这个怎么样:

      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 服务器端代码

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

      JavaScript

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

      跳过&lt;html&gt;&lt;head&gt;... 的东西。只需打印您需要的数据。然后通过 AJAX 获取数据。

      【讨论】:

      • 感谢您的回复!我不确定在我的情况下使用 AJAX 是否有效。变量$id 是从url 中获取的,因此对于http://www.domain.com/view/1234,服务器端变量$id 将设置为1234。然后必须将这个 1234 值传递给 javascript 文件(该文件执行 AJAX 返回服务器端以从数据库中检索数据)
      • 这是完成任务的有趣方式:)
      • 将值从 php 传递到 js 不需要 ajax 的开销——因此它不适合此任务。生成额外的 DOM 元素以将数据从服务器端移植到客户端将不必要地使脚本膨胀。我不推荐上述任何一种技术。
      【解决方案3】:

      您可以将参数作为 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,所以可能会有错别字 ;)

      【讨论】:

      • 太棒了!虽然我现在只发送 1 个变量,但现在我知道如何发送数组了 :)
      猜你喜欢
      • 2019-06-02
      • 2012-03-28
      • 1970-01-01
      • 2013-11-11
      • 2020-09-22
      • 2016-06-17
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      相关资源
      最近更新 更多