Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: передача переменных из javascript в php
 
 автор: Дмитрий Смаль   (10.09.2009 в 18:14)   письмо автору
 
 

Здравтсвуйте!

Ломаю голову как передать значение переменной из 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 не нравится из-за переадресации.

  Ответить  
 
 автор: Trianon   (10.09.2009 в 18:19)   письмо автору
 
   для: Дмитрий Смаль   (10.09.2009 в 18:14)
 

А подумать?
При первой загрузке (вернее - при первом обращении к серверу) никакая переменная JS в исполняющийся серверный скрипт передана быть не может. Просто потому что браузер в этот момент запрос к серверу уже выпустил, а JS-скрипт выполняться еще не начал. И не начнет, пока сервер браузеру страницу не отдаст. А когда начнет, любая передача данных от браузера (JS) к серверу (php) уже будет второй и никак не первой.

JS может обратиться к серверу напрямую перезапросив страницу [ location.href=?params ] или по AJAX-методике. Но так или иначе отрисовывать страницу придется уже после этого обращения.

  Ответить  
 
 автор: Дмитрий Смаль   (10.09.2009 в 18:50)   письмо автору
 
   для: 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";

?>


и оно работает!!!
ура

  Ответить  
 
 автор: Trianon   (10.09.2009 в 18:53)   письмо автору
 
   для: Дмитрий Смаль   (10.09.2009 в 18:50)
 

И что же оно выдает?

А если написать echo $i * 5; что выдаст? :))

  Ответить  
 
 автор: Дмитрий Смаль   (10.09.2009 в 19:01)   письмо автору
 
   для: Trianon   (10.09.2009 в 18:53)
 

это да...
счас чё-то придумаю..

  Ответить  
 
 автор: heed   (10.09.2009 в 19:27)   письмо автору
 
   для: Дмитрий Смаль   (10.09.2009 в 19:01)
 

http://dklab.ru/lib/JsHttpRequest/
PS. пишу второе точно-такое-же меседж за сегодняшнии последнии пол дня :)

  Ответить  
 
 автор: AlexSol   (10.09.2009 в 21:56)   письмо автору
 
   для: Дмитрий Смаль   (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> 

  Ответить  
 
 автор: Commander   (11.09.2009 в 07:36)   письмо автору
 
   для: Дмитрий Смаль   (10.09.2009 в 18:14)
 

Передать данные на сервер без перезагрузки страницы можно только при помощи AJAX.

Как - читайте здесь.

  Ответить  
 
 автор: AlexSol   (11.09.2009 в 07:53)   письмо автору
 
   для: Commander   (11.09.2009 в 07:36)
 

не только ajax

  Ответить  
 
 автор: Commander   (11.09.2009 в 13:12)   письмо автору
 
   для: AlexSol   (11.09.2009 в 07:53)
 

А ака еще?

  Ответить  
 
 автор: coloboc66   (11.09.2009 в 13:32)   письмо автору
 
   для: Commander   (11.09.2009 в 13:12)
 

Надо полагать, AlexSol имеет ввиду Флэш.

  Ответить  
 
 автор: AlexSol   (11.09.2009 в 13:56)   письмо автору
 
   для: 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">

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования