2012-03-23 3 views
2

im, пытающийся передать переменную из javascript в строку PHP, включает код для создания более динамичного скрипта. Но до сих пор мне этого не удалось.Передать переменную javascript в php-код

Логика заключается в следующем:

Глядя на коде ниже - я хочу заменить «TextFile.txt» с яваскриптом переменным.

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

показать:

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

Любые идеи о том, как достичь этого? Я знаю, что я пытаюсь присоединиться к сценариям на стороне клиента на стороне сервера, но разве это невозможно сделать так, как я пытаюсь? Может быть, с несколькими хитростями? Я не хочу писать сто PHP скрипты для чего-то, что должно быть настолько интуитивно и просто ... :(не могу ли я избежать этого ...

+0

Что вы пытаетесь достичь? –

+0

это невозможно. вам нужно использовать AJAX –

+0

@ Capt.Morgan: см. мои обновления, возможно, это поможет вам. –

ответ

-1

Попробуйте это:

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

Хотя Я не уверен, что это что-то нужно было бы ...

+0

Это вызовет ошибку времени выполнения в php, прежде чем вы сможете увидеть свою страницу. – slash197

+0

@ slash197 Ну, я просто попытался ответить чем-то - по крайней мере, «грамматически» - правильно. Дело в том, что я собирался написать об использовании AJAX, хотя это один из тех вопросов, когда просто неясно, что фактически имеет в виду OP, и чего он стремится достичь ... –

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

OK ... как бы я адаптировать это к моему jquery? в настоящее время это полный код этой детали: // Добавить пролет в div \t \t var target2 = document.getElementById ("дескриптор"); \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

+0

Вы можете предоставить больше кода? это для меня много нечеткое. вы уверены, что хотите/хотите использовать jQuery? –

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 фактически выводит что-то.

Смежные вопросы