im пытается передать переменную из javascript в строку PHP, включая код для создания более динамичного скрипта. Но до сих пор мне этого не удалось.
Логика такова:
Посмотрев ниже код – я хочу заменить «textfile.txt» на переменную javascript.
descrip2.innerHTML = "<?php include('textfile.txt'); ?>";
показывать:
var thisfile = [userinput]; descrip2.innerHTML = "<?php include(thisfile); ?>";
Любые идеи о том, как достичь этого? Я знаю, что я пытаюсь присоединиться к сценариям на стороне клиента на стороне сервера, но разве это невозможно сделать так, как я пытаюсь? Может быть, с несколькими хитростями? Я не хочу писать сотни php-скриптов для чего-то, что должно быть настолько интуитивным и простым … 🙁 нет, если я могу избежать этого …
Если бы я понял ваш вопрос, вы не можете так поступать.
вы можете пойти с ajax-запросом. Если вы используете jquery, вы можете сделать следующее:
var thisfile = [userinput]; $(descrip2).load(thisfile);
или сделать запрос ajax самостоятельно ..
если ваш файл является простым html-текстом, вы можете сделать это с помощью функции file_get_contents (), которая возвращает содержимое файла:
descrip2.innerHTML = "<?php echo file_get_contents('textfile.txt'); ?>";
Если вы хотите использовать это много раз, вы можете закодировать его (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-файл действительно выводит что-то.
ОБНОВИТЬ:
От вашего вопроса и от того, что вы говорите в комментарии. Я предполагаю, что у вас есть такой сценарий:
поэтому перед тем, как продолжить, создайте хорошо отформатированный файл для хранения всей информации. пример
- 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>
Попробуй это :
var thisfile = [userinput]; descrip2.innerHTML = "<?php include("+thisfile+"); ?>";
Хотя я не уверен, что это то, что нужно …