【问题标题】:Pass javascript variable into php code将 javascript 变量传递到 php 代码中
【发布时间】:2012-03-23 09:30:02
【问题描述】:

我试图将一个变量从 javascript 传递到一行 PHP 包含代码以创建一个更动态的脚本。但到目前为止,我还没有做到这一点。

逻辑如下:

查看下面的代码 - 我想用 javascript 变量替换“textfile.txt”。

descrip2.innerHTML = "<?php include('textfile.txt'); ?>";

显示:

var thisfile = [userinput];
descrip2.innerHTML = "<?php include(thisfile); ?>";

关于如何实现这一目标的任何想法?我知道我试图将客户端脚本与服务器端连接起来,但这不能按照我尝试的方式完成吗?也许有一些调整? 我不想为应该如此直观和简单的东西编写一百个 php 脚本... :( 如果我可以避免的话...

【问题讨论】:

  • 你想达到什么目的?
  • 这是不可能的。你需要使用 AJAX
  • @Capt.Morgan:看看我的更新,也许对你有帮助。

标签: php javascript html variables


【解决方案1】:

如果我理解你的问题,你就不能那样做。

您可以使用 ajax 请求。如果你使用 jquery,你可以这样做:

var thisfile = [userinput];
$(descrip2).load(thisfile);

或者自己做ajax请求..

【讨论】:

    【解决方案2】:

    如果您的文件是简单的 html 文本,您可以使用返回文件内容的 file_get_contents() 函数来执行此操作:

    descrip2.innerHTML = "<?php echo file_get_contents('textfile.txt'); ?>";
    

    【讨论】:

      【解决方案3】:

      如果您想多次使用,您可以对其进行编码(base64)并将其加载到表单以隐藏输入。这样你就可以多次重复使用(无需每次都调用 ajax)。

      【讨论】:

        【解决方案4】:

        服务器端脚本将始终在客户端脚本之前运行和呈现,因此在编写代码时请记住这一点

        我使用的是 jQuery,但你可以使用普通的 javascript。

        <div id="#welcomeMessage"></div>
        $('#welcomeMessage').html("<?php echo 'hello'?>");
        

        如果使用 javascript

        document.getElementById('welcomeMessage').innerHTML = "<?php echo 'hello'?>";
        

        我很确定这也会起作用

        document.getElementById('welcomeMessage').innerHTML = "<?php include_once('textfile.php'); ?>";
        

        只要你的 php 文件实际输出了一些东西。

        【讨论】:

          【解决方案5】:

          更新:

          根据您的问题和您在评论中所说的话。我假设你有这样的场景:

          1. 您有一个包含一些信息的文件。
          2. 您想用这些信息填充您的 div。

          所以在进一步创建一个格式良好的文件来存储所有信息之前。例子

          • data.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <data>
              <div>
                  <h2>lorem ipsum</h2>
                  <p>brown fox jump hover the lazy dog</p>
              </div>
              <div>
                  <h2>lorem ipsum 1</h2>
                  <p>brown fox jump hover the lazy dog 1</p>
              </div>
          </data>
          

          然后使用 AJAX 加载内容并将其附加到想要的元素,如下所示

          <html>
              <head>
                  <title></title>
                  <script>
                      var descriptor;
                      function init() {
                          descriptor = document.getElementById("descriptor");
                          loadFromFile('data.xml');
                      }
          
                      function loadFromFile(thisfile) {
                          var xmlhttp;
                          if(window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
                              xmlhttp = new XMLHttpRequest();
                          } else {// code for IE6, IE5
                              xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                          }
                          xmlhttp.onreadystatechange = function() {
                              if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
          
                                  var data = xmlhttp.responseXML.documentElement.getElementsByTagName('div');
                                  var divs = '';
          
                                  for(var i = 0; i < data.length; i++) {
          
                                      var div = data[i];
          
                                      divs += '<div>';
                                      divs += '<h2>' + div.getElementsByTagName('h2')[0].firstChild.nodeValue + '</h2>';
                                      divs += '<p>' + div.getElementsByTagName('p')[0].firstChild.nodeValue + '</p>';
                                      divs += '</div>';
          
                                  }
          
                                  descriptor.innerHTML = divs;
                              }
                          }
                          xmlhttp.open("GET", thisfile, true);
                          xmlhttp.send();
                      }
                  </script>
              </head>
              <body onload="init()">
                  <div id="descriptor"></div>
              </body>
          </html>
          

          【讨论】:

          • 好的...我将如何适应我的jquery?目前这是这个特定部分的完整代码: //向 div 添加一个跨度 var target2 = document.getElementById("descriptor"); var descript2 = document.createElement("span"); var textlocation = "txtfile.txt"; descript2.setAttribute("id", "d_title"); target2.appendChild(descript2); var thisfile = "textfile.txt"
          • 你能提供更多代码吗?这对我来说很模糊。你确定你是/想要使用 jQuery 吗?
          【解决方案6】:

          试试这个:

          var thisfile = [userinput];
          descrip2.innerHTML = "<?php include("+thisfile+"); ?>";
          

          虽然我不确定这是不是一个人需要的东西......

          【讨论】:

          • 这会在你看到你的页面之前在 php 中抛出一个运行时错误。
          • @slash197 好吧'我只是试图用一些东西来回应——至少,“语法上”——正确的。事实是我正要写关于使用 AJAX 的文章,尽管这是其中一个问题案例,其中根本不清楚 OP 的实际想法以及他的目标是什么......
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-10-07
          • 1970-01-01
          • 1970-01-01
          • 2018-01-09
          • 1970-01-01
          • 2014-03-04
          • 2018-03-05
          相关资源
          最近更新 更多