как вывести картинку и запустит php в js
Здравствуйте! как вывести картинку и запустить php в JS :help:
пока все находиться в одно html файле = все работает :dance: НО как только я их разделяю по правилам: все php в javascript не работает:-? document.onmouseover = function(e){ if(e.target.tagName == 'A'){ if(e.target.id == 'a1'){ document.querySelector('#links').textContent = '<?php $conf = parse_ini_file("admin/new/1.dat" ); echo $conf[text1]; ?>'; document.querySelector('#image').textContent = '/admin/new/1.jpg'; } if(e.target.id == 'a2'){ document.querySelector('#links').textContent = '<?php $conf = parse_ini_file("admin/new/2.dat" ); echo $conf[text1]; ?>'; document.querySelector('#image').textContent = '/admin/new/2.jpg'; } if(e.target.id == 'a3'){ document.querySelector('#links').textContent = '<?php $conf = parse_ini_file("admin/new/3.dat" ); echo $conf[text1]; ?>'; document.querySelector('#image').textContent = '/admin/new/3.jpg'; } if(e.target.id == 'a4'){ document.querySelector('#links').textContent = '<?php $conf = parse_ini_file("admin/new/4.dat" ); echo $conf[text1]; ?>'; document.querySelector('#image').textContent = '/admin/new/4.jpg'; } if(e.target.id == 'a5'){ document.querySelector('#links').textContent = '<?php $conf = parse_ini_file("admin/new/5.dat" ); echo $conf[text1]; ?>'; document.querySelector('#image').textContent = '/admin/new/5.jpg'; } } } <img id=\"image\" src=\"image\" alt=\"альтернативный текст\"> <div id=\"links\">Тут будет выводится текст из ссылок</div> ссылки <a id=a1 href=#>a1</a><br /> <a id=a2 href=#>a2</a><br /> <a id=a3 href=#>a3</a> <a id=a4 href=#>a4</a> <a id=a5 href=#>a5</a> |
Готов проект
в общем: сделал по старинке 90х :blink: может у кого, что по свежей есть :victory:
отдельно файл javascript.js в нем утрамбовал две функции :( document.onmouseover = function(e){ if(e.target.tagName == 'A'){ if(e.target.id == 'a1'){ document.querySelector('#links').textContent = '11111111111111aaaaaaaaa1'; } if(e.target.id == 'a2'){ document.querySelector('#links').textContent = '222222222222222222aaaaaaaaaaaaa'; } if(e.target.id == 'a3'){ document.querySelector('#links').textContent = '3333333333333333333aaaaaaaa'; } if(e.target.id == 'a4'){ document.querySelector('#links').textContent = '44444444444444aaaaaaaaaaaaaaa4'; } if(e.target.id == 'a5'){ document.querySelector('#links').textContent = '<?php $conf = parse_ini_file("admin/new/5.dat" ); echo $conf[text1]; ?>'; document.querySelector('#image').textContent = '/admin/new/5.jpg'; } } } function ChangeImg() { if(document.images) { eval("document."+ChangeImg.arguments[0]+ ".src=('"+ChangeImg.arguments[1]+"')"); } } в html документе вывел а) отдельно тексты, б) отдельно картинки $new1 = parse_ini_file("admin/new/1.dat"); $new2 = parse_ini_file("super.txt"); echo" <table class=\"table1\"> <tr> <td class=\"td12\"><img src=\"text/001.bmp\" name=\"image1\" alt=\"image1\" /></td> <td class=\"td13\"><div id=\"links\">Тут будет выводится текст из ссылок</div></td> <td class=\"td14\"> <table class=\"table7\"> <tr> <th>Новости</th> </tr> <tr> <td><a id=\"$new1[id]\" href=\"$new1[pach]\" onmouseover=\"ChangeImg('image1','admin/new/2.jpg')\" onmouseout=\"ChangeImg('image1','admin/new/2.jpg')\">$new1[link]</a></td> </tr> <tr> <td><a id=\"$new2[id]\" href=\"$new2[pach]\" onmouseover=\"ChangeImg('image1','admin/new/1.jpg')\" onmouseout=\"ChangeImg('image1','admin/new/1.jpg')\">$new2[link]</a></td> </tr> <tr> <td><a id=\"$new3[id]\" href=\"$new3[pach]\">$new3[link]</a></td> </tr> <tr> <td><a id=\"$new4[id]\" href=\"$new4[pach]\">$new4[link]</a></td> </tr> <tr> <td><a id=\"$new5[id]\" href=\"$new5[pach]\">$new5[link]</a></td> </tr> </table> </td> </tr> </table> если есть возможность :thanks: подкорректируйте плиз, т.к. я понимаю что эта писанина на твердую 3 :write: |
не работает строка
document.querySelector('#links').textContent = '<?php echo "000000000000000"; ?>'; эта страка работает только когда и скрипт и пшп вместе на странице:-E и не работает если делаю так: <script src="js/new.js"></script> не уже ли нет способов кроме post и джет?:yes: :-E |
Есть три решения: мерзкое, убогое и правильное.
Мерзкое: настроить твой сервер так, чтобы он исполнял php код внутри .js файлов. По умолчанию он этого не делает. Гуглить по словам <имя сервера> enable php execuion in .js files. Убогое: возвращать js из php точно также, как ты возращаешь html из php: <script src="js/new.php"></script> Пример: new.php
<?php header('Content-Type: application/javascript');?> // javascript code here Правильное: полностью разделить серверную и клиентскую логику. PHP скрипты должны отдавать исключительно json данные по GET\POST запросам, в .js и .html должны быть исключительно javascript и разметка соответственно. P.S. Когда выводишь данные в js из php никогда не используй просто echo, всегда используй json_encode. Да, даже для строк и чисел. Так шанс случайно накосячить сильно меньше. document.querySelector('#links').textContent = '<?php echo "000000000000000"; ?>';-> document.querySelector('#links').textContent = <?=json_encode("000000000000000")?>; |
спасибо! теперь я вижу что выдает:
Цитата:
|
попытка звять текст из файлов
я пытался сделать, чтобы текст из файлов брал. т.е. брал 1111a.dat и открывал его так:
$new1 = parse_ini_file("admin/text/new/1.dat");в теории $new1 = parse_ini_file("[B][U]#links[/U][/B]"); а от туда Код:
$new1[pach] document.onmouseover = function(e){ if(e.target.tagName == 'A'){ if(e.target.id == 'a1'){ document.querySelector('#links').textContent = '1111a.dat'; document.href=('"+ChangeImg.arguments[1]+"'); } if(e.target.id == 'a2'){ document.querySelector('#links').textContent = '2222a.dat'; } if(e.target.id == 'a3'){ document.querySelector('#links').textContent = '3333333333333333333aaaaaaaa'; } if(e.target.id == 'a4'){ document.querySelector('#links').textContent = '<?php echo json_encode("bbbbbbbbbbbbbb"); ?>'; } if(e.target.id == 'a5'){ document.querySelector('#links').textContent = '<?php echo "000000000000000"; ?>'; } } } function ChangeImg() { if(document.images) { eval("document."+ChangeImg.arguments[0]+ ".src=('"+ChangeImg.arguments[1]+"')"); } } |
|
в этом то и проблема
значение переменной передается только в том случае когда весь скрипт находиться в одном документе:
<script>document.write("<?php $name='ffffffffffff'; ?>");</script> <?php echo "==========".$name; ?> а, когда разделяешь: document.write("<?php $name='ffffffffffff'; ?>"); <?php echo "==========".$name; ?> скрипт работать перестает: т.е. файлы JS сервер не обрабатывает. и 3 варианта как это подправить :victory: Правильно 3й вариант :thanks: каждый на своем месте! вот: а теперь как мне принять значение от JS к JS :-? <?php $name="<div id='output0'>555</div>"; echo json_encode($name); echo "<a href={$name}>11111</a>"; ?> <script> document.body.myData = { name: 'file.txt' }; document.getElementById("output").innerHTML=document.body.myData.name; </script>в DIV все отлично, а в ссылку значение <div0 и.т.п СКРИН ВЫВОДА |
проба номер 447
ВОТ и тогда наткнулся на это:
<script> function chg(id) { var el = document.getElementById(id); if (el.href.indexOf("image/x.png")>0) { el.href="image/xb.png"; } else { el.href="image/x.png"; } } </script> <?php echo "<a href=\"image/x.png\" id=\"img_1\" onClick=\"chg(this.id,'check')\">11111111111</a>"; ?>:victory: все четко передает, теперь осталось склеить :write: по моему у меня просто глюкнул ДЕНВЕР |
чтение файла построчно
а можно еще вопрос: текстовый файл содержит
Цитата:
|
Часовой пояс GMT +3, время: 23:14. |