|
|
|
| Здравтсвуйте!
Ломаю голову как передать значение переменной из javascript в php без перезагрузки страницы.
Мне нужно ширину расширения монитора передать в пхп.
сча сделал вот так
<Script Language="JavaScript">
var height=0;
if (self.screen) {
width = screen.width
}
else if (self.java) {
var jToolKit = java.awt.Toolkit.getDefaultToolkit();
var scrsize = jToolKit.getScreenSize();
width = scrsize.width;
}
if (width > 0 ) {
document.cookie="width="+width;
}
else exit();
</Script>
<?php
echo $_COOKIE["width"];
?>
|
но проблема в том, что переменная в пхп присваивается только после перезагрузки страницы,
а нужно чтобы при первой загрузке страницы.
решение с window.location.href не нравится из-за переадресации. | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(10.09.2009 в 18:14)
| | А подумать?
При первой загрузке (вернее - при первом обращении к серверу) никакая переменная JS в исполняющийся серверный скрипт передана быть не может. Просто потому что браузер в этот момент запрос к серверу уже выпустил, а JS-скрипт выполняться еще не начал. И не начнет, пока сервер браузеру страницу не отдаст. А когда начнет, любая передача данных от браузера (JS) к серверу (php) уже будет второй и никак не первой.
JS может обратиться к серверу напрямую перезапросив страницу [ location.href=?params ] или по AJAX-методике. Но так или иначе отрисовывать страницу придется уже после этого обращения. | |
|
|
|
|
|
|
|
для: Trianon
(10.09.2009 в 18:19)
| | Перерыл я много в нете и уже начал думать что это невозможно.
Но перебирая самые дурацкие вариант методом тыка сделал вот такое:
<?php
$i= "
<Script Language=\"JavaScript\">
var height=0;
if (self.screen) {
width = screen.width
}
else if (self.java) {
var jToolKit = java.awt.Toolkit.getDefaultToolkit();
var scrsize = jToolKit.getScreenSize();
width = scrsize.width;
}
if (width > 0 ) {
document.write(width);
}else exit();
</Script>";
echo "$i";
?>
|
и оно работает!!!
ура | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(10.09.2009 в 18:50)
| | И что же оно выдает?
А если написать echo $i * 5; что выдаст? :)) | |
|
|
|
|
|
|
|
для: Trianon
(10.09.2009 в 18:53)
| | это да...
счас чё-то придумаю.. | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(10.09.2009 в 19:01)
| | http://dklab.ru/lib/JsHttpRequest/
PS. пишу второе точно-такое-же меседж за сегодняшнии последнии пол дня :) | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(10.09.2009 в 18:14)
| |
<Script Language="JavaScript">
var height=0;
if (self.screen) {
width = screen.width
}
else if (self.java) {
var jToolKit = java.awt.Toolkit.getDefaultToolkit();
var scrsize = jToolKit.getScreenSize();
width = scrsize.width;
}
if (width > 0 ) {
document.write("<img src='sript.php?w="+width+" '>");
}
</Script>
|
| |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(10.09.2009 в 18:14)
| | Передать данные на сервер без перезагрузки страницы можно только при помощи AJAX.
Как - читайте здесь. | |
|
|
|
|
|
|
|
для: Commander
(11.09.2009 в 07:36)
| | не только ajax | |
|
|
|
|
|
|
|
для: AlexSol
(11.09.2009 в 07:53)
| | А ака еще? | |
|
|
|
|
|
|
|
для: Commander
(11.09.2009 в 13:12)
| | Надо полагать, AlexSol имеет ввиду Флэш. | |
|
|
|
|
|
|
|
для: Commander
(11.09.2009 в 13:12)
| | надо от задач отталкиваться. если только передать, то
1/ как делают счетчики - через картинку
document.write("<img src='sript.php?w="+width+" '>");
|
2/ отправка формы в iframe
<form target="Exec" method="post">
....
<iframe id="Exec" height="0" width="0" name="Exec">
|
| |
|
|
|