Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 14.07.2009, 08:05
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");

необходимость в таком количестве вариантов сомнительна: "MSXML2.XMLHTTP" соответствует msxml3.dll ("MSXML2.XMLHTTP.3.0"), а у "Microsoft.XMLHTTP" только одна версия (1.0), которая опять же указывет на ту же msxml3.dll, из чего можно предположить, что его оставили для совместимости

Сообщение от infocean
Подскажите плизз как лучше организовать вывод полученных(c помощью ajax) данных (из файла load.php) во всплывающее окошко
какие это данные? И все зависит от того как будет организовано это окошко, насколько оно будет универсальным. Если окно будет использоваться только на одной странице, то его можно сразу в html прописать, но сделать изначально невидимым. Если надо, например, вывести сообщение об ошибке, то его можно вставить с помощью innerHTML.
Ответить с цитированием
  #12 (permalink)  
Старый 14.07.2009, 11:45
Интересующийся
Отправить личное сообщение для infocean Посмотреть профиль Найти все сообщения от infocean
 
Регистрация: 12.07.2009
Сообщений: 18

данные о пользователе например скрипт будет выводить :
<div>
            Новостей: 30<br />
            Комментариев: 600<br />
        </div>


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

А примерный код самого окошка:
<div id="layer_message">
           <div id="header_mess">Сюда можно было бы подставлять заголовок</div>
           <div id="text_mess">А сюда текст</div>
     </div>

Но проблема заключается в том,что я не знаю как передать из php, две разные переменные, чтобы они подставились в код окошка.

p.s. Дошло, один из вариантов(но если у вас есть лучше, то с радостью выслушаю) - это генерировать окошко в php документе и выводить с помощью конструкции echo.
Но тут возник другой вопрос,как после получения ajax'ом результатов, можно вывести окошко?

Последний раз редактировалось infocean, 14.07.2009 в 11:53.
Ответить с цитированием
  #13 (permalink)  
Старый 14.07.2009, 13:27
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Как генерировать окно с помощью php? При загрузке страницы? Тогда в него все равно надо будет подставить результаты ajax-запроса. Генерировать в ajax-запросе? Если окно будет выводится еще и без ajax-запросов, то будет 2 версии (javascript, php): при изменении одной надо будет корректировать другую (так делать не стоит)

1) можно генерировать изначально невидимый каркас с помощью php, а содержимое подставлять с помощью javascript. Но тогда код, относящийся к окну будет в 3-х файлах (php-шаблон, javascript, css) и надо будет не забывать, кроме подключения js, css еще нарисовать каркас в страничке
2) можно сделать, чтобы разметка создавалась js-скриптом, т.е. примерно так
function msg( content ) {
    // создаем разметку окна, назначаем обработчики 
    // (закрытие окна) и присоединяем окно к документу, 
    // если еще не сделали этого (можно создавать каркас
    // один раз, а потом просто менять содержимое)

    // подставляем содержимое (content)

    // показываем окно
}

Последний раз редактировалось x-yuri, 14.07.2009 в 14:16.
Ответить с цитированием
  #14 (permalink)  
Старый 14.07.2009, 13:34
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
создавалась js-скриптом, т.е. примерно так
Ничё так, скрипт
Ответить с цитированием
  #15 (permalink)  
Старый 14.07.2009, 16:55
Интересующийся
Отправить личное сообщение для infocean Посмотреть профиль Найти все сообщения от infocean
 
Регистрация: 12.07.2009
Сообщений: 18

Если я всё правильно понял, то второй вариант мне больше подходит.
Пример:
файл load.php
echo "Какой-то текст";
ajax'ом получаю этот текст
Но возникло ещё пара вопросов:
1) Как мне вызвать эту функцию создающую окошко, после получения ответа ajax'ом(если можно, то кратенький пример опишите пожалуйста)
2) Как мне сделать подстановку Заголовка и текста в окно, т.е. как ajax'ом определить, что из полученных данных относится к заголовку окна, а что является текстом окна? (тут без примера не обойтись, т.к. я в ajax'е начинающий)

Последний раз редактировалось infocean, 14.07.2009 в 16:58.
Ответить с цитированием
  #16 (permalink)  
Старый 14.07.2009, 18:42
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

1) так же, как любую другую функцию
2) чтобы передать несколько значений можно использовать JSON:
$o = array('a' => 1, 'b' => 'asd');
echo json_encode($o);

var o = eval( '('+xhr.responseText+')' );
Ответить с цитированием
  #17 (permalink)  
Старый 14.07.2009, 19:24
Интересующийся
Отправить личное сообщение для infocean Посмотреть профиль Найти все сообщения от infocean
 
Регистрация: 12.07.2009
Сообщений: 18

Огромное спасибо за ответы.
Пойду шаманить
Ответить с цитированием
  #18 (permalink)  
Старый 15.07.2009, 12:39
Интересующийся
Отправить личное сообщение для infocean Посмотреть профиль Найти все сообщения от infocean
 
Регистрация: 12.07.2009
Сообщений: 18

В общем, написал вроде простенькую функцию по созданию окошка, но не могу написать функцию удаления окошка, код привёл ниже.
Помогите кто-нибудь, пожалуйста.

код файла message.js:
function newmess(title,text)
{
	// получаем заголовок и текст
	this.title = title;
	this.text = text;
	
	// Ширина рабочей области
	this.getDocumentWidth = function()
	{
		return (window.innerWidth)?window.innerWidth:((document.all)?document.documentElement.offsetWidth:null);
	}

	// Высота рабочей области
	this.getDocumentHeight = function()
	{
		return (window.innerHeight)?window.innerHeight:((document.all)?document.documentElement.offsetHeight:null);
	}
	
	// Создаём окошко в памяти
	this.layer = document.createElement("div");
	this.layer.className = "layermess";
	this.layer.id = "layermess";
	this.layer.style.top = (this.getDocumentHeight()/2)-150 + "px";
	this.layer.style.left = (this.getDocumentWidth()/2)-150 + "px";
	this.header = document.createElement("div");
	this.header.className = "header";
	this.header.id = "header";
	// Как сделать чтобы див со словом "Закрыть", работал при клике на нём?(строка ниже не работает :( )
	this.header.innerHTML = this.title + "<div onclick=\"this.close()\">Закрыть</div>";
	//-------------------------------------------
	this.message = document.createElement("div");
	this.message.className = "message";
	this.message.id = "message";
	this.message.innerHTML = this.text;
	//this.layer.style.visibility = "visible";
	
	// Вставляем окошко в html страницу
	this.layer.appendChild(this.header);
	this.layer.appendChild(this.message);
	this.dialog = document.getElementById("all");
	this.dialog.appendChild(this.layer);
	
this.close = function()
{
	alert("Проверка");
	this.layers = document.getElementById("layermess");
	this.layers.style.visibility = "hidden";
};
}


файл index.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Тестируем окошко</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="message.js"></script>
<script type="text/javascript">
function ShowMessage(title,text)
{
    wnd = new newmess(title,text);
    return wnd;
}
</script>
</head>

<body>
<div onclick="ShowMessage('Тест','Привет Мир!');">Открыть</div>
<div onclick="wnd.close();">Закрыть</div>
<div id="all"></div>
</body>

</html>


И если можно, то скажите, пожалуйста, правильно ли я вообще написал скрипт, т.к. на js первый раз писал, хорошо, что есть сайт и этот форум, очень много полезной инфы.

Последний раз редактировалось infocean, 15.07.2009 в 12:43.
Ответить с цитированием
  #19 (permalink)  
Старый 15.07.2009, 14:34
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

1) this тут как минимум не обязателен, не вижу смысла пихать все в объект, если ты потом пользуешься разве что this.layer
2) close может получить доступ к layer следующим образом:
function a() {
    var layer = ...;
    function b() {
        // здесь можно использовать layer
    }
}

3) если делаешь "класс", то лучше методы в прототип добавлять, при твоем подходе для каждого объекта будет создаваться своя функция
function msg(){ ... }
msg.prototype.method1 = function() { ... }

4) с помощью document.createElement можно создать внешний контейнер, а все содержимое добавить с помощью innerHTML
5) getDocumentWidth, getDocumentHeight можно вынести из объекта (функции), это скорее функции общего назначения. Кроме того, какой-то там нестандартный способ определения размеров. Можешь посмотреть, как в некоторых фреймворках поступают
6) внутри атрибута this указывает на соответствующий элемент. Можно этот div создать с помощью createElement и назначить обработчик через свойство onclick
Ответить с цитированием
  #20 (permalink)  
Старый 15.07.2009, 15:29
Интересующийся
Отправить личное сообщение для infocean Посмотреть профиль Найти все сообщения от infocean
 
Регистрация: 12.07.2009
Сообщений: 18

Огромное спасибо, за советы, ответы и подсказки
Буду дальше разбираться, потом может выложу тут код своего окошка,вдруг кому пригодится.

Последний раз редактировалось infocean, 15.07.2009 в 15:33.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Браузер доказывает что не видит функцию SleepWalker Общие вопросы Javascript 7 17.06.2009 23:14
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30
Сторонние библиотеки - быть или не быть? IIIEPJIOK Оффтопик 64 21.03.2009 19:39
Что означает конструкция ? ivanmara Общие вопросы Javascript 55 07.01.2009 02:54
Стоит ли пользоваться библиотеками или лучше писать свой код? lancer Общие вопросы Javascript 5 24.03.2008 19:31