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

Форум PHP

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

 

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

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

тема: метод передачи данных из JS в PHP
 
 автор: tokmak   (13.01.2009 в 22:37)   письмо автору
 
 

Всем Добрый Вечер.
Необходима ваша помощь в нахождении метода передачи между двумя языками.
Как всем известно эти языки работают по разным стороннам, только прошу не говорить, что это не реально, метод есть 100%, его нужно только найти.
Итак, имеется такой код, файл enter.php:

<script>
// <!--
count = 3;  // Переменную name необходимо передать в PHP
// -->
</script>
<script type="text/javascript" src="http://test/show.js">  
</script>


Файл show.js имеет код:
document.write('
<?php 
    
// необходимо вытащаить переменную count из JS в PHP
   
$i 0
   while(
$count_js>$i) echo 'Hello World!<br>';
?>');    


Т.е. по идеи должно вывести Hello World! три раза если запустить файл enter.php.

Я так понимаю, это можно решить через Ajax?

Для примера, можете посмотреть коды от Бегуна, Директа и тд. у них эта система работает. Только мне это не для рекламного сервиса необходимо. Спасибо за ответы.
П.С. уже создавал я когда-то подобную тему, но что-то не так пошло... сильно не ругайте.

  Ответить  
 
 автор: sim5   (13.01.2009 в 22:42)   письмо автору
 
   для: tokmak   (13.01.2009 в 22:37)
 

Вы сами то поняли то, чего написали? Вы тоже не обижайтесь но это бред полнейший. Метод document.write запишет на страницу клиента код РНР, а "Как всем известно эти языки работают по разным стороннам"... И чего вы ожидаете на стороне клинета от РНР?

  Ответить  
 
 автор: tokmak   (13.01.2009 в 22:49)   письмо автору
 
   для: sim5   (13.01.2009 в 22:42)
 

Вообще, мне необходимо, чтобы на стороне клиента выводилась определенная информация, которая поступает из БД. Через примерный код, т.е. стоит число 3, должна выйти три раза определенная инфа из БД, а если в JS-коде сменят на 4, то значит выводим четыре раза и тд.

  Ответить  
 
 автор: sim5   (13.01.2009 в 22:51)   письмо автору
 
   для: tokmak   (13.01.2009 в 22:49)
 

Значит в запросе к странице и пердавайте параметр, который и будет опредлать число выводимых элентов, при чем это не обязательно JS может быть, достаточно делать запрос формой.
Если вам это нужно менять динамически, то это AJAX, но ни о каком присваивании значений JS в РНР и в этом случае речи не идет - это значение некой переменной.

  Ответить  
 
 автор: tokmak   (13.01.2009 в 22:57)   письмо автору
 
   для: sim5   (13.01.2009 в 22:51)
 

в каком запросе передавать параметр? И мне необходимо именно через JS работать.
Если разместить на разных сайтах этот блок-код, то на каждом сайте должна появиться определенная информация, которая генерируется на сервере(PHP,Mysql) и генерация зависит от этого блок-кода, который находится на стороне клиента(посетителя сайта).

Через формы, мне не подходит этот вариант, и через $_GET тоже((

  Ответить  
 
 автор: sim5   (13.01.2009 в 23:01)   письмо автору
 
   для: tokmak   (13.01.2009 в 22:57)
 

Что значит именно в JS? В любом случае вам нужно передать запрос на сервер с параметром определяющим то или иное действие. Что это будет, GET или POST, это уже вторичное, но в любом случае необходимое. Сам по себе JS вам ничего не сделает, это вы понимаете? А AJAX технология, это связка JS и РНР, а не волшебник.

  Ответить  
 
 автор: tokmak   (13.01.2009 в 23:06)   письмо автору
 
   для: sim5   (13.01.2009 в 23:01)
 

ага, т.е. необходимо значения переменных из JS передать на сервер через запрос, чтобы потом их непосредственно уже обрабатывать, я правильно понял?
Не подскажите, как это можно осуществить....
Ajax может это сделать?

П.С. Извеняюсь у меня глупые вопросы, пытаюсь понять суть работы))

  Ответить  
 
 автор: sim5   (13.01.2009 в 23:13)   письмо автору
 
   для: tokmak   (13.01.2009 в 23:06)
 

Конечно павильно. Если вам нужны некие действия в JS, или никое значение параметра запроса определяет JS-сценарий, то вы это значение должны передать на сервер в запросе. Что это будет, скрытая форма передающая методом POST (значение из JS в этом случае присваивается скрытому полю, и отпавка формы происходит методом submit()), либо подставляете это значение в url запроса (GET).
Ajax применяют в случае, если нужно изменить только один параметр, не перегружая остальную страницу. Если это не критерий, то он вам совсем не нужен - сделать запрос к серверу можно и без него.

  Ответить  
 
 автор: tokmak   (13.01.2009 в 23:20)   письмо автору
 
   для: sim5   (13.01.2009 в 23:13)
 

Уважаемый sim5, не могли бы подсказать, как можно передать запросы в JS к серверу, к сожалению я с ним мало дружу. Понимать легко понимаю код, а вот сам не могу написать.
Спасибо за пояснения, что это такое и как оно работает.

  Ответить  
 
 автор: sim5   (13.01.2009 в 23:57)   письмо автору
 
   для: tokmak   (13.01.2009 в 23:20)
 

Мне неведомо кто является инициатором запроса у вас, имея ввиду сам JS-сценарий или пользователь, но если это JS, то тут либо работа таймера либо зависимость от условия. Другими словами, если ваш JS-сценарий сразу при загрузке страницы будет что-то определять и отправлять запрос на сервер, тот отдавать страницу, JS опять запрос и т.д., то у вас будет HTML-аналог генератора, а не страница для пользователя. Поэтому, я просто предполагаю, что инициирует запрос пользователь, например, делая некий выбор. Кстати, если надо вывести 3, 4, 5, 6... чего-то, то не надо никакого JS, достаточно обычной формы для выбора.
Но допустим, что пользователь выбрал нечто, запустив JS-сценарий, который получил у вас некую цифру, которую вам и надо отослать серверу. Например, как это передать формой и методом POST. Для этого на странице будет форма:
<form id="myfrm" action="main.php" method="post">
<input type="hidden" name="num" id="num" value="">
</form>

Ваш скрипт выполнив какой-то расчет, помещает это в скрытое поле формы
document.getElementById('num').value = тут ваше значение;
И далее отправляем запрос на сервер (отправляем форму):
document.getElementById('myfrm').submit().
Принимайте и проверяйте на сервере параметр $_POST['num'] и в зависимости от его значения выводите требуемое.
Либо в JS сценарии пишите запрос - формируете url запроса, добавляете параметр со значением, и отправляете его:
location="main.php?num="+тут ваше значение;
И принимаете на сервере $_GET['num'].

  Ответить  
 
 автор: tokmak   (21.01.2009 в 18:45)   письмо автору
 
   для: sim5   (13.01.2009 в 23:57)
 

sim5, спасибо за подробный ответ. Я пошел по технологии AJAX. Все переменные передаются как нужно, но! Ajax ведь не работает с различными доменами. Поэтому происходит нарушение безопасности и браузер говорит, что не удается проверить данные и спрашивает "Продолжить?" Как же быть?
v
ar xmlHttp


function mainl(l,p)


xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 }
var url="http://ads.countclick/ads.php"
url=url+"?p="+l
url=url+"&l="+l
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged 
xmlHttp.open("GET",url,true)
xmlHttp.send(null)

}
function stateChanged() 

if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
 document.getElementById("model-list").innerHTML=xmlHttp.responseText
 } 
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}


Принцип работы как на рекламных сервисах Бегун, Директ и прочие:
Пользователь устанавливает на своем сайте код JS(беру код Бегуна):
<script type="text/javascript"> 
    var begun_auto_colors           = new Array();
    var begun_auto_fonts_size       = new Array();
    var begun_auto_pad              =      107693574;     // идентификатор площадки
    var begun_auto_limit            =              4;     // число объявлений выводимых на площадке
    var begun_auto_width            =            700;     // ширина блока объявлений
    begun_auto_colors[0]            =      '#0000CC';     // цвет ссылки объявлений
    begun_auto_colors[1]            =      '#000000';     // цвет текста объявления
    begun_auto_colors[2]            =      '#00CC00';     // цвет домена объявления
    begun_auto_colors[3]            =      '#FFFFFF';     // цвет фона блока объявлений
    begun_auto_fonts_size[0]        =         '10pt';     // р-мер шрифта ссылки объявлений
    begun_auto_fonts_size[1]        =          '9pt';     // р-мер шрифта текста объявления
    begun_auto_fonts_size[2]        =          '9pt';     // р-мер шрифта домена объявления
    begun_auto_fonts_size[3]        =          '8pt';     // р-мер шрифта заглушки
    var begun_block_type            =   'Horizontal';     // тип блока
</script> 
<script src="http://autocontext.begun.ru/autocontext.js" type="text/javascript"></script> 


Как им удалось это сделать? Используют они еще JSP.

  Ответить  
 
 автор: sim5   (22.01.2009 в 02:13)   письмо автору
 
   для: tokmak   (21.01.2009 в 18:45)
 

Вы что хотите сделать, предложение выставлять ваш баннер на страницах желающих? Почитайте о более простом - iframe, этого будет вполне достаточно, и грузите в него что хотите.

  Ответить  
 
 автор: tokmak   (22.01.2009 в 02:25)   письмо автору
 
   для: sim5   (22.01.2009 в 02:13)
 

насчет iframe мне известно, а другого выхода нет никакого? ведь не у всех может быть включен iframe

  Ответить  
 
 автор: sim5   (22.01.2009 в 03:55)   письмо автору
 
   для: tokmak   (22.01.2009 в 02:25)
 

А как выключить iframe?

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

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