Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.10.2010, 01:00
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

getElementsById is null в коде + AjaxGear
firebug пишет, кучу ошибок document.getElementById("x" + x + "y" + y) is null

function process(){
	for (var y=0; y<=10; y++){
	for (var x=0; x<=10; x++){
		var ajax = new AjaxGear.Ajax();
		ajax.setMethod("POST");
		ajax.setPagePath("server.php");
		ajax.onRequestComplete = function(){
			document.getElementById("x"+x+"y"+y).innerHTML = "<img src='img/"+ajax.getResponseText()+"'></img>";
			};
		ajax.setRequestData("x="+x+"&y="+y);
		ajax.startRequest();
	}
	}
}


что бы это значило? как исправить?

так делал, не помогло
function process(){
	for (var y=0; y<=10; y++){
	for (var x=0; x<=10; x++){
		var ajax = new AjaxGear.Ajax();
		ajax.setMethod("POST");
		ajax.setPagePath("server.php");
		ajax.onRequestComplete = function(){
			var klolo;
			if(ajax.getResponseText()!=null || ajax.getResponseText()!=""){
				klolo = ajax.getResponseText();
			}else{
				klolo = "no.gif";
			}
			document.getElementById("x"+x+"y"+y).innerHTML = "<img src='img/"+klolo+"'></img>";
			};
		ajax.setRequestData("x="+x+"&y="+y);
		ajax.startRequest();
	}
	}
}

Последний раз редактировалось Jekel, 15.10.2010 в 01:04.
Ответить с цитированием
  #2 (permalink)  
Старый 15.10.2010, 02:02
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

по-русски по-английски всё ж ясным языком написано
это означает что на момент прихода ответа с сервера на странице нету элемента, у которого id="x10y10"
вот и все.
проверьте, не напутали, ил вы чего, и где вы его потеряли.

И еще пара важных моментов:
1)несмотря на то, что вы перебираете в двух циклах x и y, значение будет писатся только в id="x10y10"
потому что http://javascript.ru/basic/closure#p...-ispolzovaniya
2)посылка 100 одновременных AJAX-запросов - не самая удачная по скорости идея.
потому что в один момент, в зависимости от браузера будет выполнятся только 2-4(может более.точно не помню) AJAX-запроса.
все остальные будут висеть в очереди.
поэтому гораздо лучше будет, если вы в серверном сркипте напишите чтобы он отдавал весь массив данных за один раз, а на клиенте вы уже разбирайте полученный массив
Ответить с цитированием
  #3 (permalink)  
Старый 15.10.2010, 02:04
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

<?php
session_start();

for ($y=0; $y<=10; $y++){
	for ($x=0; $x<=10; $x++){
		$mapelements.="<div style='float:left; position:relative; left:".($x*50)."; top:".($y*50)."; width:50px; height:50px;' id='x".$x."y".$y."'></div>";
		
	}
}		

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
<script language="javascript" type="text/javascript" src="AjaxGear.Core.js"></script>
<script language="javascript" type="text/javascript" src="client.js"></script>
</head>
<body onLoad="process();">
<table width="550" height="550" border="1" align="center" cellpadding="1" cellspacing="1">
  <tr>
    <td align="left" valign="top" bgcolor="#c0c0c0"><div style='float:left; position:relative; left:0; top:0; width:550px; height:550px;'><?php echo $mapelements;?></div></td>
  </tr>
</table>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 15.10.2010, 02:05
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

вот, все ж есть(((
Ответить с цитированием
  #5 (permalink)  
Старый 15.10.2010, 02:08
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

если получать все данные сразу клиентом, то будет жрать много трафика. а так оно будет обновлять каждый элемент отдельно.
кароче есть сетка 10*10 и надо обновлять каж элемент отдельно, потому, что если загружать каждых 100ms всю, то жрет много...может посоветуете как сделать по уму
Ответить с цитированием
  #6 (permalink)  
Старый 15.10.2010, 02:09
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

может быть в этой библиотеке AJAX по умолчанию синхронный?
или еще что-то?
выложите на хостинг свой пример, и дайте ссылку.
Ответить с цитированием
  #7 (permalink)  
Старый 15.10.2010, 02:11
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

http://cybernews.com.ua/lol/
Ответить с цитированием
  #8 (permalink)  
Старый 15.10.2010, 02:13
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Jekel
если получать все данные сразу клиентом, то будет жрать много трафика. а так оно будет обновлять каждый элемент отдельно.
если обновлять каждый элемент отдельно, но при этом обновлять ВСЕ элементы, то тарфика сожрет гораздо больше, чем загрузить все.
потому что запрос это не только данные которые вы посылаете/принимаете, но еще и заголовки.
когда вы поулчаете все скопом, то заголовки только один раз шлются.а когда по отдельности, то каждый раз
Сообщение от Jekel
что если загружать каждых 100ms
если вам надо раз в 100ms обнволять какую-то конкретную ячейку, то ее и обновляйте.
если вам надо в начале загрузки страницы получить ВСЕ элементы, то все и поулчайте(кстати, зачем тут вообще AJAX?!)
Ответить с цитированием
  #9 (permalink)  
Старый 15.10.2010, 02:15
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Jekel
http://cybernews.com.ua/lol/
Зашел по ссылке.
увидел 100 AJAX_запросов, которые ничего не возвращали, и никаких ошибок выполнения
Ответить с цитированием
  #10 (permalink)  
Старый 15.10.2010, 02:17
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

как это зачем ajax???
должно быть как тут, только все правильно сделано и оптимизировано)
тут жрет много и на FF не пашет
http://cybernews.com.ua/other/os/postnuclear/index.php
Player
password

Последний раз редактировалось Jekel, 15.10.2010 в 02:22.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операторы сравнения, null, undefined, number 0, empty string("") alexeis Общие вопросы Javascript 5 28.09.2010 21:11
Поиск слова в исходном коде html страницы klsorat2010 Ваши сайты и скрипты 1 20.05.2010 23:46
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20
То-ли лыжи не едут, толи... возможно ошибка в коде. AzriMan Общие вопросы Javascript 19 18.05.2009 16:07
PHP, JavaScript, MySQL solomusic Серверные языки и технологии 14 18.12.2008 14:05