通过javascript变量到php代码
即时通讯尝试从JavaScript传递一个变量到一行PHP包含代码来创建一个更动态的脚本。但到目前为止,我还没有设法实现这一点。通过javascript变量到php代码
的逻辑如下:
看下面的代码 - 我想更换“TextFile.txt的”用javascript变量。
descrip2.innerHTML = "<?php include('textfile.txt'); ?>";
显示:
var thisfile = [userinput];
descrip2.innerHTML = "<?php include(thisfile); ?>";
就如何实现这一目标的任何想法?我知道,即时通讯尝试加入客户端脚本与服务器端,但这不能以我尝试的方式完成吗?也许有一些调整? 我不想写东西了一百PHP脚本,应该是如此直观和简单的... :(要是我能避免它...
试试这个:
var thisfile = [userinput];
descrip2.innerHTML = "<?php include("+thisfile+"); ?>";
虽然我不知道这是什么人会需要...
这会在您看到您的页面之前在PHP中引发运行时错误。 – slash197 2012-03-23 09:40:16
@ slash197嗯'我只是试着用某种东西 - 至少是“语法上”来回应 - 是正确的。事实是,我正要写关于使用AJAX的,虽然它是其中一个问题的情况下,它只是不清楚OP实际上有什么想法,他的目标是实现... – 2012-03-23 09:47:06
如果你的文件是简单的HTML文本,你可以做到这一点与file_get_contents()函数返回文件的内容:
descrip2.innerHTML = "<?php echo file_get_contents('textfile.txt'); ?>";
如果我理解你的问题,你不能那样做。
你可以去ajax请求。如果你使用jQuery的你可以这样做:
var thisfile = [userinput];
$(descrip2).load(thisfile);
或自己做Ajax请求..
UPDATE:
从你的问题,从您的评论说什么。我假设你有这样一个场景:
- 你有一个文件的一些信息。
- 你想用你的信息填充你的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?目前这是此特定部分的完整代码: //向区域添加跨度 \t \t var target2 = document.getElementById(“descriptor”); \t \t var descrip2 = document.createElement(“span”); \t \t var textlocation =“txtfile.txt”; \t \t descrip2.setAttribute(“id”,“d_title”); \t \t target2.appendChild(descrip2); var thisfile =“textfile.txt” – Meh 2012-03-23 09:55:36
你能提供更多的代码吗?这对我来说很模糊。你确定你是/想使用jQuery吗? – 2012-03-23 12:41:49
如果你想例如,你可以多次使用它来编码它(base64)并将它加载到表单中以隐藏输入。那么你将可以重复使用多次(而不是每次都调用ajax)。
服务器端脚本将始终运行和客户端脚本之前渲染所以记住
我使用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文件实际上是输出的东西。
你想达到什么目的? – 2012-03-23 09:33:09
这是不可能的。您需要使用AJAX – 2012-03-23 09:34:49
@ Capt.Morgan:查看我的更新,也许它对您有所帮助。 – 2012-03-23 12:54:47