我试图将一个变量从javascript传递到一行PHP包含代码来创建一个更动态的脚本。但到目前为止,我还没有成功实现这一目标。
逻辑如下:
查看下面的代码 - 我想用'javascript变量替换'textfile.txt'。
descrip2.innerHTML = "<?php include('textfile.txt'); ?>";
显示:
var thisfile = [userinput];
descrip2.innerHTML = "<?php include(thisfile); ?>";
关于如何实现这一目标的任何想法?我知道我试图加入客户端脚本与服务器端,但这可不是我尝试的方式吗?也许有一些调整? 我不想为一些应该如此直观和简单的东西写一百个PHP脚本...... :(如果我可以避免它... ...
答案 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)
<强>更新强>
从你的问题和你在评论中说的话。我假设你有这样的场景:
所以在进一步创建一个格式良好的文件以存储所有信息之前。示例
- 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+"); ?>";
虽然我不确定这是否需要......