通过javascript变量到php代码

问题描述:

即时通讯尝试从JavaScript传递一个变量到一行PHP包含代码来创建一个更动态的脚本。但到目前为止,我还没有设法实现这一点。通过javascript变量到php代码

的逻辑如下:

看下面的代码 - 我想更换“TextFile.txt的”用javascript变量。

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

显示:

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

就如何实现这一目标的任何想法?我知道,即时通讯尝试加入客户端脚本与服务器端,但这不能以我尝试的方式完成吗?也许有一些调整? 我不想写东西了一百PHP脚本,应该是如此直观和简单的... :(要是我能避免它...

+0

你想达到什么目的? – 2012-03-23 09:33:09

+0

这是不可能的。您需要使用AJAX – 2012-03-23 09:34:49

+0

@ Capt.Morgan:查看我的更新,也许它对您有所帮助。 – 2012-03-23 12:54:47

试试这个:

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

虽然我不知道这是什么人会需要...

+0

这会在您看到您的页面之前在PHP中引发运行时错误。 – slash197 2012-03-23 09:40:16

+0

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

从你的问题,从您的评论说什么。我假设你有这样一个场景:

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

行...我会怎么样适应这个我的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

+0

你能提供更多的代码吗?这对我来说很模糊。你确定你是/想使用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文件实际上是输出的东西。