Только сел за изучение JS, поэтому попрошу сразу не бить ногами и не закидывать какашками )
Прочитал полторы сотни страниц из довольно скучной книженции "JavaScript Подробное руководство. Пятое издание. Дэвид Флэнаган"и решил опробовать знания на практике. Увы не все получилось (
Суть опыта была интегрирование PHP и JS скриптов, передача переменных туда и обратно. Вот сам код:
index.php
<?php
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);
mb_internal_encoding('UTF-8');
setlocale(LC_ALL, 'ru_RU.UTF-8');
echo '<script language="javascript" src="js.js"></script>';
$left_link = 'Левая ссылка!';
$right_link = 'Правая ссылка!';
echo '
<div>
<div style="float:left" onclick="showLeft()">Первая ссылка</div>
<div style="float:right" onclick="showRight()">Вторая ссылка</div><br>
<div id="content" style="text-align: center">bla</div>
</div>
';
и подключаемый js.js
function showLeft()
{
var cont = document.getElementById('content');
cont.innerHTML = "<?php echo $left_link; ?>";
}
function showRight()
{
var cont = document.getElementById('content');
cont.innerHTML = "Правая ссылка!";
}
Почему то не вызывается php переменная из js функции showLeft(). Когда я жму на первую ссылку, содержимое дива 'content' остается пустым. Что я делаю не так?
Спустя 7 минут, 58 секунд (10.05.2011 - 16:13) alex12060 написал(а):
gidrosoldat
А Вы попробуйте в ХТМЛ файл вставить пхп код? Сработает? Думаю нет.
JS файлы предназначены для работы с JavaScript кодом.
Вывод: Неправильно так делать, в ЖС писать код ПХП.
Как побороть:
1. htacces
Теперь куда хотите. туда и пишите PHP код.
Еще можно не выделать в отдельный файл код, а оставить его в php файле, тогда там сработает без .htaccess
А Вы попробуйте в ХТМЛ файл вставить пхп код? Сработает? Думаю нет.
JS файлы предназначены для работы с JavaScript кодом.
Вывод: Неправильно так делать, в ЖС писать код ПХП.
Как побороть:
1. htacces
AddType application/x-httpd-php .php .htm .html .phtml .js .css
Теперь куда хотите. туда и пишите PHP код.
Еще можно не выделать в отдельный файл код, а оставить его в php файле, тогда там сработает без .htaccess
Спустя 18 минут, 7 секунд (10.05.2011 - 16:31) gidrosoldat написал(а):
alex12060, моя ошибка.
Но я до боли в зубах не хочу делать кашу из PHP, JS и HTML кода в PHP файле. Хотелось бы разделять эти файлы и функции.
Я думаю вы поняли, чего я хотел добиться из этого примера - как мне его сделать правильно и чтобы код не резал глаз?
Но я до боли в зубах не хочу делать кашу из PHP, JS и HTML кода в PHP файле. Хотелось бы разделять эти файлы и функции.
Я думаю вы поняли, чего я хотел добиться из этого примера - как мне его сделать правильно и чтобы код не резал глаз?
Спустя 10 минут, 19 секунд (10.05.2011 - 16:41) alex12060 написал(а):
Отредактировал. Теперь Вам видно?
Спустя 3 минуты, 15 секунд (10.05.2011 - 16:44) Игорь_Vasinsky написал(а):
Цитата |
Но я до боли в зубах не хочу делать кашу из PHP, JS |
а сам:
cont.innerHTML = "<?php echo $left_link; ?>";
Вам же говорят, в js файла php работать не будет, как выход js прямо в коде страницы
Спустя 55 минут, 14 секунд (10.05.2011 - 17:40) gidrosoldat написал(а):
Цитата (Игорь_Vasinsky @ 10.05.2011 - 13:44) |
Вам же говорят, в js файла php работать не будет, как выход js прямо в коде страницы |
Хмм, ну может есть какие то специальные функции в JS?
Вроде бы есть, что идут по линку и получают ответ.
Например:
function getXmlHttp(){
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
var xmlhttp = getXmlHttp()
xmlhttp.open('GET', '/modules/rsslib/rss_request.php', true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
document.getElementById('div_my').innerHTML = xmlhttp.responseText;
}
}
};
xmlhttp.send(null);
Что нибудь такое, но попроще и применимо к моему случаю.
Спустя 2 часа, 4 минуты, 52 секунды (10.05.2011 - 19:45) Игорь_Vasinsky написал(а):
Спустя 34 минуты, 32 секунды (10.05.2011 - 20:19) gidrosoldat написал(а):
Игорь_Vasinsky, думаю на первое время и этого хватит. А потом (когда по книжке дальше дойду все само собой разъяснится!