2012-03-23 99 views
2

即時通訊嘗試從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

回答

-1

試試這個:

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

0

如果你的文件是簡單的HTML文本,你可以做到這一點與file_get_contents()函數返回文件的內容:

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

如果我理解你的問題,你不能那樣做。

你可以去ajax請求。如果你使用jQuery的你可以這樣做:

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

或自己做Ajax請求..

0

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

0

如果你想例如,你可以多次使用它來編碼它(base64)並將它加載到表單中以隱藏輸入。那麼你將可以重複使用多次(而不是每次都調用ajax)。

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文件實際上是輸出的東西。