Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   как вывести картинку и запустит php в js (https://javascript.ru/forum/dom-window/83566-kak-vyvesti-kartinku-i-zapustit-php-v-js.html)

leon2009sp 13.01.2022 23:32

как вывести картинку и запустит 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>

leon2009sp 14.01.2022 06:52

Готов проект
 
в общем: сделал по старинке 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:

leon2009sp 14.01.2022 11:16

не работает строка
 
document.querySelector('#links').textContent = '<?php echo "000000000000000"; ?>';

эта страка работает только когда и скрипт и пшп вместе на странице:-E
и не работает если делаю так:
<script src="js/new.js"></script>

не уже ли нет способов кроме post и джет?:yes: :-E

Aetae 14.01.2022 11:29

Есть три решения: мерзкое, убогое и правильное.

Мерзкое: настроить твой сервер так, чтобы он исполнял 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")?>;

leon2009sp 14.01.2022 11:56

спасибо! теперь я вижу что выдает:
Цитата:

00000<\/div>"
:cray:

leon2009sp 14.01.2022 12:01

попытка звять текст из файлов
 
я пытался сделать, чтобы текст из файлов брал. т.е. брал 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]+"')");
  }
}

Aetae 14.01.2022 12:03

http://phpfaq.ru/newbie/na_tanke

leon2009sp 15.01.2022 08:58

в этом то и проблема
 
значение переменной передается только в том случае когда весь скрипт находиться в одном документе:
<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 и.т.п
СКРИН ВЫВОДА

leon2009sp 15.01.2022 09:21

проба номер 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:

по моему у меня просто глюкнул ДЕНВЕР

leon2009sp 15.01.2022 10:49

чтение файла построчно
 
а можно еще вопрос: текстовый файл содержит
Цитата:

text1="111111111111111111111111111111ttt";
text2="2222222222222222222222ttt";
text3="3333333333333333";
как прочитать text2 ,,???? спасибо!


Часовой пояс GMT +3, время: 18:03.