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

HTML+CSS+JavaScript

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

 

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

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

тема: Передача данных между доменами
 
 автор: Лена   (08.02.2010 в 23:40)   письмо автору
 
 

Помогите, пожалуйста.
Есть основной сайт. На нем лежит файл site.php.
Есть сайт партнера. Основной сайт дает партнеру код, который он должен поместить на своих страницах.
Это код формы:
<form action="http://www.мой_сайт.ru/страница.php" method="get">
<input name="cysurl" type="text" value="http://">
<input type="submit" value="Отправить" onClick = 'mysubmit();'>
</form>


Далее нужно поместить код обрабочика или вывода результата:
<script language="JavaScript" src="site.js" type="text/javascript"></script>
<noscript>Для работы нашего сервиса необходима поддержка JavaScript. Проверьте настройки вашего браузера.</noscript>


Партнер помещает код - и на его странице отображается форма.
Ее обработчик - site.js, который лежит на основном сайте.
И я так понимаю, что в site.js должна лежать функция отправки данных на сервер:


function mysubmit(id) {
    var form = document.getElementById(id);
    if (form!=null) {
        form.submit();
    }
}


Правильно ли я понимаю этот процесс? Или нужно как-то по другому делать?
Не знаю, правильно или нет, но
есть еще вариант с <iframe id="target" name="target" width="600px" height="700px" frameborder="0"
style="border-width:0px;" src="http://site/form.html"> </iframe> - в плавающий фрейм поместить код формы. и давать партнерам размещать форму в ифрейме.
Какой вариант лучше?

Буду признательна, если дадите хотя бы ссылки на подобные примеры.

  Ответить  
 
 автор: sim5   (09.02.2010 в 03:41)   письмо автору
 
   для: Лена   (08.02.2010 в 23:40)
 

Зачем кнопке SUBMIT метод submit()?

  Ответить  
 
 автор: АЯ   (09.02.2010 в 03:46)   письмо автору
 
   для: Лена   (08.02.2010 в 23:40)
 

Лена, из вашего описания не очень понятно - "кто есть кто" и "что у кого есть"? :-)
Вы САМА можете изменить "основной сайт" или "сайт партнера", т.е. вы - "центровая" или же "партнер"?
Или вы - "центровая" и хотите "устаканить" ваши взаимоотношения с партнёром?


В общем, перепишите вашу проблему, сделав разделение на "мой сайт" и на "чужой сайт", чтобы было понятно - на какой именно стороне можно что-то изменять/реализовывать.

  Ответить  
 
 автор: Лена   (09.02.2010 в 10:22)   письмо автору
 
   для: АЯ   (09.02.2010 в 03:46)
 

Скажем так. Мой сайт(на самом деле сайт моего клиента) дает код формы чужому сайту.
Пользователь на чужом сайте заполняет форму, данные которой отправляются на мой сайт. Мой сайт(вернее, скрипт на моем сайте - site.php. хочу сделать на стороне сервера) получив данные формы, отправляет их на e-mail админа сайта. Далее чужой сайт получает уведомление: "Спасибо за заполнение формы, мы свяжемся с вами..."
А теперь понятно, или еще объяснить?

  Ответить  
 
 автор: АЯ   (09.02.2010 в 16:43)   письмо автору
 
   для: Лена   (09.02.2010 в 10:22)
 

Понял, вы - "центровая" и вам надо "устаканить" взаимоотношения с партнёрами.

Если вы партнёру дадите просто "код формы" для размещения на его странице, то партнеру это не очень понравится. Потому как форма - это такая штука, которая при своем сабмите требует окна.Как только юзер заполнит форму и ткнет на кнопку сабмита - вместо страницы партнера браузер перекинет его на ваш site.php (т.е. юзер со страницы вашего партнера уйдет).

Разумеется, вы можете в "коде формы" прописать <form target="_blank">, и тогда у юзера при сабмите будет открываться в браузере новое окно. Но этот вариант не устроит уже вас - большинство браузеров по умолчанию блокируют новые окна - вы потеряете реальных клиентов.

Остается еще один способ - указать в target имя ифрейма, который должен быть на странице партнера. И в этом ифрейме уже и отобразится результат сабмита формы.
Но партнёры - люди разные, среди них могут попасться и совсем бездари в программировании.
Объяснять им - что и как делать - замучаетесь.

Обычно в таких случаях партнеру дается не "код формы", а всего одна строчка вызова JS-скрипта с вашего "центрового" сайта. Этот скрипт сформирует на странице партнера методом document.write () ифрейм определенных размеров и вида, куда впишет код вашей формы и во внутрь этого же ифрейма ваша форма будет сабмититься.

Резюме:
У вас на центровом сайте должны быть два файла:
1) JS-файл, с URL, положим, - http://your_sire.ru/.../for_partners.js
2) PHP-файл, с URL, положим, - http://your_sire.ru/.../delay.php

Всем партнёрам вы должны давать следующий простейший HTML-код:
<script type="text/javascript" src="http://your_sire.ru/.../for_partners.js"></script>
который партнёры должны вставить куда-нить между тегами <body> и </body>

PS. С JS-файлом вам могут помочь здесь.
С вопросами по PHP-файлу обращайтесь на родственный PHP-форум

PS2. Разумеется, система эта мною описана в самом примитивном виде. Обычно параметры вызываемого скрипта юзер может регулировать: изменять размеры создаваемого скриптом ифрейма, вид его границ, цвет и шрифт текста... Это всё довольно легко реализуемо.

  Ответить  
 
 автор: Лена   (09.02.2010 в 22:22)   письмо автору
 
   для: АЯ   (09.02.2010 в 16:43)
 

Давайте пока без ифрейма.
Вот есть у меня файл for_partner.html, в нем код, который я отдаю партнерам:

<div id="partnerForm"></div>
<script language="javascript" src="http://www.shop/for_partner.js" />

т.е. этот код - на стороне партнера.
На моем сервере, как вы сказали "центровом", лежит файл for_partner.js такого содержания:

document.getElementById("partnerForm").innerHTML='<form action="http://www.shop/act.php" method="post">'+
'<input name="cysurl" type="text" value="">'+
'<input type="hidden" name="alpha_method" value="post">'+
'<input type="hidden" name="alpha_success" value="http://www.shop/success.php">'+
'<input type="hidden" name="alpha_error" value="http://www.shop/error.php">'+
'<input type="submit" value="Отправить" name = "forma"></form>';


Допустим, партнер ставит код на свою страницу.
Я вызываю сейчас файл for_partner.html и на странице у меня пусто. Значит и партнер ничего не увидит. Почему? Где ошибка?

  Ответить  
 
 автор: dyadya   (09.02.2010 в 22:53)   письмо автору
 
   для: Лена   (09.02.2010 в 22:22)
 

Партнер увидит Вашу форму, потому что у него будет на странице блок
<div id="partnerForm"></div> 
, куда форма и будет вставлена с помощью кода:
document.getElementById("partnerForm").innerHTML

  Ответить  
 
 автор: Лена   (09.02.2010 в 23:08)   письмо автору
 
   для: dyadya   (09.02.2010 в 22:53)
 

Почему я на другом домене вставляю это блок на страницу и ничего не вижу?

  Ответить  
 
 автор: neadekvat   (09.02.2010 в 23:26)   письмо автору
 
   для: Лена   (09.02.2010 в 23:08)
 

Сам не профи в js, но буквально несколько часов назад сталкивался с очень похожей проблемой
Т.е. не innerHTML, а document.write
И еще - поставьте себе на лису firebug - оч помогает.

  Ответить  
 
 автор: АЯ   (10.02.2010 в 00:48)   письмо автору
 
   для: Лена   (09.02.2010 в 22:22)
 

Метод document.getElementById () работает только на уже сформированном документе.
А ваш скрипт обращается к этому методу в процессе формирования документа.
Ниже вам правильно подсказали - здесь надо использовать метод document.write ()

Кроме того, у вас имеется существенный пробел в начальном образовании. Блок <script> обязательно должен закрываться закрывающим тегом </script>: "The <SCRIPT> element is a block element and requires a closing tag."
-----

Т.е. партнеру вы должны дать следующий код:
<div><script type="text/javascript" src="http://www.shop/for_partner.js"></script></div>
Тег <div> здесь В ПРИНЦИПЕ не нужен. Но я оставил - народ жутко боится "секса без презерватива": всё, что надо, и что не надо - в <div> зачем-то "заворачивают" :-)

А ваш файл for_partner.js должен выглядеть так:
with (document)
{open ();
write ('<form action="http://www.shop/act.php" method="post">\n'+
       '<input name="cysurl">\n'+
       '<input type="hidden" name="alpha_method" value="post">\n'+
       '<input type="hidden" name="alpha_success" value="http://www.shop/success.php">\n'+
       '<input type="hidden" name="alpha_error" value="http://www.shop/error.php">\n'+
       '<input type="submit" value="Отправить" name="forma"></form>\n'); 
close ()}

Пустой value="" и type="text" прописывать не надо.
Они и так ВСЕГДА такие по умолчанию.

  Ответить  
 
 автор: Лена   (10.02.2010 в 11:14)   письмо автору
 
   для: АЯ   (10.02.2010 в 00:48)
 

Спасибо Вам большое. Все так корректно излагаете, не так позор чувствуешь от своего незнания. Это получилось. Идем дальше.

>Тег <div> здесь В ПРИНЦИПЕ не нужен. Но я оставил - народ жутко боится "секса без презерватива": всё, что надо, и что не надо - в <div> зачем-то "заворачивают" :-)

Там какая фишка. Клиент требует, чтобы форма либо могла как-то менять свои размеры, либо сделать две формы - одна пошире, другая - поуже, чтобы влезала в правую боковую колонку.
Я просто думала одну форму вставить в <div style = "width:240;display:block;">, другую - в
<div style = "width:400;display:block;">.

>Пустой value="" и type="text" прописывать не надо.
value я прописала только что, мне же надо на сервере значения формы получать.

Вопрос один естьпо оформлению. Кнопки submit и reset.
<input name="zajavka" type="submit" style = "height:20;width:80;" value="Отправить">
Задала я высоту и ширину, но надпись у меня не по центру располагается. text-align:center; в IE и в FF ничего не дает.

  Ответить  
 
 автор: АЯ   (10.02.2010 в 18:33)   письмо автору
 
   для: Лена   (10.02.2010 в 11:14)
 

>Я просто думала одну форму вставить в <div style = "width:240;display:block;">, другую - в
<div style = "width:400;display:block;">.


Мда... боится народ "без презерватива"... и что тут поделаешь?:-)
Кто вам мешает написать эти стили прямо форме <form style="width: чего-надо; display: чего-надо">? Зачем в <DIV> заворачивать?
Уговорил? :-)

Кстати, для кроссбраузерности надо обязательно указывать единицы измерения: width: 240px и width: 400px

-----
>надпись у меня не по центру располагается

Да по центру она, по центру.
Просто в ваших браузерах (на которых вы тестируете) размер шрифта по умолчанию в настройках имеет, видимо, крупные размеры - 12 пикселей, а то и больше :-)

Сделайте кнопку поБольше style="height: 100px; width: 200px"
или размер шрифта поМеньше style="height: 20px; width: 80px; font-size: 70%" и убедитесь в этом сами.

  Ответить  
 
 автор: Лена   (11.02.2010 в 00:16)   письмо автору
 
   для: АЯ   (10.02.2010 в 18:33)
 

>Уговорил? :-)
Я бы сказала нет, но немного ниже мои вопросы... Одни и те же конфеты бывают в разных обертках. Это по крайней мере лучше сравнение, чем у Вас.

>Кстати, для кроссбраузерности надо обязательно указывать единицы измерения: width: 240px и width: 400px

Раньше указывала. Почему тогда в <table width = "200"> - мы эти единицы не указываем? Что это за стандарты такие, когда в одном случае - указывай, а в другом - не надо.

Момент еще один всплыл. Есть у меня таблицы стилей. Они оформлены как:
<style>
.zajavka{
height:400px;
width:230px;
display:block;
}
/* ну и там стили дальше */

Когда я формирую документ через JS, так, как Вы сказали, я делаю так(привожу кусочек):

with (document)
{open ();
write (
'<style>\n' +
'.zajavka{\n'
);
close ()}


Дело в том, что у меня там { внутри встречается(при определении стиля) и из-за нее ничего на страницу не выводится. Как быть?

  Ответить  
 
 автор: АЯ   (11.02.2010 в 01:16)   письмо автору
 
   для: Лена   (11.02.2010 в 00:16)
 

>"Одни и те же конфеты бывают в разных обертках"

Я предпочитаю употреблять конфеты без оберток, из красивых и дорогих коробочек.
...также как и секс :-)
-----
>"Почему тогда в <table width = "200"> - мы эти единицы не указываем? Что это за стандарты такие, когда в одном случае - указывай, а в другом - не надо."

WIDTH="200" - это АТРИБУТ тега.
А в записи STYLE="width: 200px" - атрибутом тега является STYLE, а width: 200px - это уже ПРАВИЛО СТИЛЯ.

Стандарт HTML описывает - как надо использовать все ТЕГИ и их АТРИБУТЫ (включая и атрибут STYLE).
У каждого тега свой собственный набор атрибутов, и каждый атрибут каждого тега имеет какие-то свои особенности.

А вот в стандарте CSS установлено - как надо использовать ПРАВИЛА СТИЛЕЙ (или внутри атрибута тега STYLE, или внутри блока <STYLE>...</STYLE>, или внутри подключаемого CSS-файла).
И требования этого стандарта ЕДИНЫ (для любых тегов, и для любого способа записи).

Ферштейн?
------
>"ничего на страницу не выводится"

Блок <STYLE>, также как и блок <SCRIPT> требует, чтобы его закрывали. Покуда не встретит браузер закрывающего тега </STYLE>, будет полагать всё написанное безграмотным ошибочным написанием правил стилей и, соответственно, ничего из написанного отображать не будет.
При использовании метода document.write () любые символы (в т.ч. и любая фигурная скобка) и их последовательности выводятся безо всяких проблем. Лишь только совпадающие с внешними кавычки надо экранировать, да последовательность <script> надо выводить, "разбивая" её на несколько частей.
Т.е. не document.write ('<script') , а, например,
document.write ('<scr' + 'ipt')

А вообще-то блок <STYLE>...</STYLE> должен прописываться в заголовке документа (между тегами <HEAD> и </HEAD>).
В принципе, и внутри тела работать будет.
Но - пока... пока браузеры поддерживают этот "нестандарт".
Так что, если делаете "на века", то здесь лучше стили прописывать внутри тегов.
Это и безопаснее будет.
Представьте, что партнёр ваш родился под тем же созвездием, что и вы. И потому на странице у него уже определен класс с тем же именем zajavka. Вы ему своим блоком <STYLE> его класс переопределите и весь его дизайн испортите.
Или, представьте, что партнер ваш - фанат валидации: есть такие любители, им неважно - как оно работает, главное, чтобы стандартам соответствовало.
Вставит он ваш код, а в результате невалидную страницу получит.
Так что осторожнее - партнер, он и обидеться может :-)

  Ответить  
 
 автор: Лена   (11.02.2010 в 22:22)   письмо автору
 
   для: АЯ   (11.02.2010 в 01:16)
 

Спасибо. То, что хотела, получилось.

>Так что, если делаете "на века", то здесь лучше стили прописывать внутри тегов.

У меня в форме 13 полей.
Возле каждого из них надпись, например:
<div id = "form_label">e-mail</div><input name="box" size="40">
Выписывать стиль(один и тот же!) внутри каждого div нерационально. Проще написать id = "form_label".

>Я предпочитаю употреблять конфеты без оберток, из красивых и дорогих коробочек.

Конфеты в коробках в карман не положишь. А в обертках(вернее, уже без оберток) можно жевать по пути на работу.

  Ответить  
 
 автор: mihdan   (09.02.2010 в 16:49)   письмо автору
 
   для: Лена   (08.02.2010 в 23:40)
 

[поправлено модератором]

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

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