将javascript变量传递给php代码

时间:2012-03-23 09:30:03

标签: php javascript html variables

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

逻辑如下:

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

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

显示:

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

关于如何实现这一目标的任何想法?我知道我试图加入客户端脚本与服务器端,但这可不是我尝试的方式吗?也许有一些调整? 我不想为一些应该如此直观和简单的东西写一百个PHP脚本...... :(如果我可以避免它... ...

6 个答案:

答案 0 :(得分:3)

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

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

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

或者自己做ajax请求..

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

<强>更新

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

  1. 你有一个包含一些信息的文件。
  2. 你想用theese信息填充你的div。
  3. 所以在进一步创建一个格式良好的文件以存储所有信息之前。示例

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

答案 3 :(得分:0)

如果你想多次使用它,你可以对它进行编码(base64)并将其加载到表单中,例如隐藏输入。然后你就可以多次重复使用(每次都不用调用ajax)。

答案 4 :(得分:0)

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

我使用的是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)

试试这个:

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

虽然我不确定这是否需要......