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

HTML+CSS+JavaScript

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: А научите меня этому трюку? (ajax)

Сообщения:  [1-10]   [11-20] 

 
 автор: zabik   (16.11.2012 в 19:45)   письмо автору
 
   для: DJ Paltus   (28.04.2009 в 12:04)
 

Не слушайте никого, особоенно первого прокомментировавшего, он краб походу полный.

вот Вам функция

 <script type="text/javascript">

/* -------------------------- */
/*   XMLHTTPRequest Enable    */
/* -------------------------- */
function createObject() {
var request_type;
var browser = navigator.appName;
if(browser == 'Microsoft Internet Explorer'){
request_type = new ActiveXObject('Microsoft.XMLHTTP');
} else {
request_type = new XMLHttpRequest();
}
return request_type;
}

var http = createObject();

/* -------------------------- */
/*        SEARCH              */
/* -------------------------- */
function searchNameq() {
var nocache = Math.random();
http.open('get', ' part_d1.html?nocache = '+nocache);
http.onreadystatechange =  searchNameqReply();
http.send(null);
}

function searchNameqReply() {
if(http.readyState == 4){
var response = http.responseText;
$("#d1").html(response); // или через стандартную ява ф-цию document.getElementByid('d1').innerHTML=response;
}
    
}
</script>


по онклику вызываете searchNameq();
должена быть установлена jquery.js

  Ответить  
 
 автор: DJ Paltus   (29.04.2009 в 16:00)   письмо автору
 
   для: PAT   (29.04.2009 в 15:27)
 

По назначению имени и id - это ибо ФФ не все равно, что использовать - что id, что name. Ошибка: window.frames.hf is undefined говорит. Наверное, есть метод обращения и для ФФ, но я им не владею, сами понимаете.
ИЕ дейсвительно, позволяет такую фривольность. Просто у меня основной браузер именно ФФ.

А по второму вопросу - каюсь, я просто не владею основами языка, поэтому пишу как на тракторе пашу.

  Ответить  
 
 автор: PAT   (29.04.2009 в 15:27)   письмо автору
 
   для: DJ Paltus   (29.04.2009 в 15:06)
 

Ясно. Соображений, значится, не было. Была путаница.

Итак, к ифрейму обращаетесь дважды:
Первый раз, как к объекту текущего окна, чтобы изменить его src.
Обращаетесь посредством метода
window.document.getElementById ()
, т.е. именно id у ифрейма вам необходим.

Второй раз обращаетесь не к ифрейму, а к окну в этом ифрейме.
Обращаетесь, используя коллекцию
window.frames.hf.
, для которой нет никакой разницы - что использовать - что id, что name.
Раз id у ифрейма уже имеется, то, исходя из "принципа разумной достаточности", совершенно незачем давать ещё и name.
----------------------------------------------------

Продолжаем разбор полётов.
Вопрос второй.
В двух вами написанных функциях вы вводите две переменные:
myname = 'reg_dj_paltus_'+x+'.html';
и
intext=window.frames.hf.document.body.innerHTML;
которые используете только внутри этих функций.
Почему тогда эти переменные у вас глобальные?

  Ответить  
 
 автор: DJ Paltus   (29.04.2009 в 15:06)   письмо автору
 
   для: PAT   (29.04.2009 в 14:57)
 

А. Это появилась путаница, когда я не сумел обратиться к iframe по id за innerHTMLом и стал обращаться по name и через window. ((

— Я два раза не повторяю. Понятно? Два раза не повторяю!

  Ответить  
 
 автор: PAT   (29.04.2009 в 14:57)   письмо автору
 
   для: DJ Paltus   (29.04.2009 в 14:02)
 

Разбор полётов.
Вопрос ПЕРВЫЙ
<iframe style="display:none" id="hf" name="hf" onLoad="further();"></iframe>

Объясните ваши соображения, когда вы ифрейму дали имя и отчество ОДИНАКОВЫЕ.
Т.е. он не Василий Иванович у вас, а Василий Василий.

Анекдот в тему:
- Пристегните ремни. Наш самолет сейчас совершит посадку в аэропорту Баден-Бадена.
- Ты чё, тёлка, по два раза повторяешь? Тут же не лохи летят!

  Ответить  
 
 автор: DJ Paltus   (29.04.2009 в 14:02)   письмо автору
 
   для: PAT   (29.04.2009 в 13:45)
 

ну, а насчет body - так не вызывает же его отсутствие в файлах с данными ошибки, а? Или есть неведомая мне причина содержать подгружаемые данные в настоящем html-формате?

  Ответить  
 
 автор: DJ Paltus   (29.04.2009 в 13:57)   письмо автору
1.1 Кб
 
   для: PAT   (29.04.2009 в 13:45)
 

АААА!
Я уже все сделал.
Только форум не грузился, фиг чего докажешь.
Вот, в аттаче - работает. Я сам, сам я. Не ругай, дядя РАТ!

  Ответить  
 
 автор: PAT   (29.04.2009 в 13:45)   письмо автору
 
   для: DJ Paltus   (29.04.2009 в 11:52)
 

Мда...
А вы ничегошеньки не поняли.

Поясняю ИШШО раз.
На конкретном жизненном примере.
Положим, познакомились вы с самой симпатичной девушкой этой планеты.
И полюбили её.
И захотели иметь с ней совместных детей.
И, положим, добились вы от неё взаимности в этом своём желании.

Спрашивается - вы вручите этой девушке коляску, пелёнки, распашонки и соску с молоком СРАЗУ ЖЕ после вашего любовного контакта?
Или всё же погодите приблизительно месяцев девять (сорок недель)?
Видимо, всё же подождёте.
Ибо с первого разу ребёнок может и не родиться... так ведь? :-)

Так и здесь.
По событию ONCHANGE тега <select> вы загружаете в ифрейм некий файл.
Вы знаете - КОГДА он полностью загрузится, чтобы можно было его прочитать?
Нет, не знаете.
Но "соску с молоком" суёте сразу - т.е. СРАЗУ ЖЕ читаете содержимое документа, который находится в этом ифрейме.

Выше я приводил пример, где на тег <IFRAME> повешен обработчик ONLOAD.
Вы вроде бы это пример изучали и даже пытались его переделать - читать вместо document.body хотели window.
Так почему ТЕПЕРЬ у вас ВОВСЕ НЕТ никакой инструкции на теге <IFRAME>?
Он у вас теперь "рожает" сразу, как только "засунете"? (извиняюсь за ненорматив).


Окончательно.
Должно быть 3 (ТРИ) функции.
ПЕРВАЯ - "висит" на событии ONCHANGE на первом списке. Загружает в <IFRAME> нужный URL согласно выбору опшена.
ВТОРАЯ - "висит" на событии ONLOAD ифрейма. Читает ПОЛНОСТЬЮ ЗАГРУЗИВШИЙСЯ в ифрейм документ. И вызывает третью функцию, передав ей полученную строку.
ТРЕТЬЯ - из полученной строки переформировывает список с городами. Эта функция у вас есть - переделывать её не надо.


Ну что, попробуете ещё раз? :-)

PS. Читаете вы в ифрейме document.body.innerHTML, так?
И где, спрашивается, у вас теги <body></body> в приложенных вами двух файлах? :-))
PS2. Событие ONLOAD сработает у вас и при вовсе неуказанном значении SRC ифрейма. Как с этим бороться - я выше писал (см. на "флаг" - переменную P = false)

  Ответить  
 
 автор: DJ Paltus   (29.04.2009 в 11:52)   письмо автору
1.1 Кб
 
   для: PAT   (29.04.2009 в 09:07)
 

Знач, так.
Всё работает, но работает неправильно.
Почему-то из iframe считывается предыдущее содержимое, а не текущее. И это меня немало тревожит, даже кушать не могу. Вот код (для дебага iframe видимый и добавлен div, отображающий по идее то, что считалось из iframe).
Что не так?

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=win-1251">
<script>
function get_some(x){
        if (x!=='blank')
        {
        myname = 'reg_dj_paltus_'+x+'.html';
        document.getElementById('hf').src=myname;
        intext=window.frames.hf.document.body.innerHTML;
        document.getElementById('debug').innerHTML=intext;
        formSecSel(intext);

        }
        else {document.getElementById ('scnd').style.display = 'none'};
        }

function formSecSel (x)
{
for (var q = document.getElementById ('scnd'), j = q.options.length - 1; j >= 0; j--) q.options [j] = null;
for (var s = x.split ('|'), j = 0; j < s.length; j++)
   {
   var o = document.createElement ('option'); var t = s [j].split ('=');
   o.value = unescape (t [0]); o.text = unescape (t [1]); q.options.add (o);
   }
q.style.display = 'inline';
}
</script>
</head>
<body>
<iframe style="display:block" id="hf" name="hf"></iframe>
<select style="width: 234px" onchange="get_some (this.value)">
<option style="color: red" value="blank">Select a region
<option value="mos">Moscovskaja oblast'
<option value="len">Leningradskaja oblast'
</select>
<div id=debug>Ы?</div>
<select id="scnd" style="display:none; width: 123px"></select>
</body>
</html>

  Ответить  
 
 автор: PAT   (29.04.2009 в 09:07)   письмо автору
 
   для: DJ Paltus   (29.04.2009 в 02:50)
 

>"Главное, чтобы начальство этого не видело"

Это - по-нашему, по-совковому...
Говорить о ДОМАШНЕМ задание, которое ИЗНАЧАЛЬНО планируется делать НА РАБОТЕ:-)

Потому иностранцы и не могут понять русского человека :-)

  Ответить  

Сообщения:  [1-10]   [11-20] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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