как вывести картинку и запустит 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, время: 01:04. |