Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.03.2011, 18:23
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

AJAX, XML и FireFox
Привет.
Есть скрипт голосования, результат выводит в xml.
В опере и ИЕ все ок, а вот в мозилле ерунда какая-то получается, понять не могу, что не так.
ПХП:
echo '<?xml version="1.0" ?>';
	
	$res = mysql_query("SELECT * FROM `poller` WHERE `id` = '".$pollId."';") or die(mysql_error());
	    if ($inf = mysql_fetch_array($res)) {
?>
		    <pollerTitle><?php echo $inf["pollerTitle"]; ?></pollerTitle>
<?php		
		    $resOptions = mysql_query("SELECT `id`, `optionText` FROM `poller_option` WHERE `pollerID` = '".$inf["id"]."' ORDER BY `pollerOrder`;") or die(mysql_error());
		        while ($infOptions = mysql_fetch_array($resOptions)) {
			        $querycount = mysql_query("SELECT `id` FROM `poller_vote` WHERE `pollerID` = '".$pollId."' AND `optionID` = '".$infOptions["id"]."';") or die(mysql_error());
					$count = mysql_num_rows($querycount);
			        echo "<option>\n
			              \t<optionText>".$infOptions["optionText"]." (".$count.")</optionText>\n				
			              \t<optionId>".$infOptions["id"]."</optionId>\n";					
			        $resVotes = mysql_query("SELECT count(id) FROM `poller_vote` WHERE `optionID` = '".$infOptions["id"]."' AND `pollerID` = '".$pollId."';");
			            if($infVotes = mysql_fetch_array($resVotes)) {
				            echo "\t<votes>".$infVotes["count(id)"]."</votes>\n";
			            }								
			        echo "</option>";				
			
		        } 	
	    }


function showVoteResults(pollId,ajaxIndex) {
	
	document.getElementById('poller_waitMessage' + pollId).style.display = 'none';
	
	var xml = ajaxObjects[ajaxIndex].response;
	xml = xml.replace(/\n/gi,'');
	
	var reg = new RegExp("^.*?<pollerTitle>(.*?)<.*$","gi"),
	    pollerTitle = xml.replace(reg,'$1');
	
	var resultDiv = document.getElementById('poller_results' + pollId);
	
	var titleP = document.createElement('P');
	titleP.className='result_pollerTitle';
	titleP.innerHTML = pollerTitle;
	resultDiv.appendChild(titleP);	
	
	var options = xml.split(/<option>/gi);
	
	pollVotes[pollId] = new Array();
	totalVotes[pollId] = 0;
	for(var no=1;no<options.length;no++) {
		
		var elements = options[no].split(/</gi);
		var currentOptionId = false;
		    for (var no2 = 0; no2 < elements.length; no2++) {
			    if (elements[no2].substring(0,1) != '/') {
			     	var key = elements[no2].replace(/^(.*?)>.*$/gi,'$1');
				    var value = elements[no2].replace(/^.*?>(.*)$/gi,'$1');
			
				        if (key.indexOf('optionText') >= 0) {
					        var pOption = document.createElement('P');
					        pOption.className='result_pollerOption';
					        pOption.innerHTML = value;
					        resultDiv.appendChild(pOption);					
					
				        }
				
				        if(key.indexOf('optionId')>=0){
					        currentOptionId = value/1;
				        }
				
						if(key.indexOf('votes')>=0){
							var voteDiv = document.createElement('DIV');
							voteDiv.className='result_pollGraph';
							resultDiv.appendChild(voteDiv);	
					
							var leftImage = document.createElement('IMG');
							leftImage.src = voteLeftImage;
							voteDiv.appendChild(leftImage);
					
					
							var numberDiv = document.createElement('DIV');
							numberDiv.style.backgroundImage = 'url(\'' + voteCenterImage + '\')';
							numberDiv.innerHTML = '0%';
							numberDiv.id = 'result_voteTxt' + currentOptionId;
							voteDiv.appendChild(numberDiv);	
					
							var rightImage = document.createElement('IMG');
							rightImage.src = voteRightImage;
							voteDiv.appendChild(rightImage);						
					
							pollVotes[pollId][currentOptionId] = value;					
							totalVotes[pollId] = totalVotes[pollId]/1 + value/1;
						}
			    }
		}
	}
	
	var totalVoteP = document.createElement('P');
	totalVoteP.className = 'result_totalVotes';
	totalVoteP.innerHTML = txt_totalVotes + totalVotes[pollId];
	voteDiv.appendChild(totalVoteP);	
	
	setPercentageVotes(pollId);
	slideVotes(pollId,0);
}

В результате:

Opera


IE


FireFox


Что не так ?

з.ы. На кол-во голосов внимания не обращайте.

Последний раз редактировалось lolka84, 12.03.2011 в 18:27.
Ответить с цитированием
  #2 (permalink)  
Старый 14.03.2011, 09:52
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

Ап
Ответить с цитированием
  #3 (permalink)  
Старый 14.03.2011, 12:11
Интересующийся
Отправить личное сообщение для Добрый слоник Посмотреть профиль Найти все сообщения от Добрый слоник
 
Регистрация: 05.03.2011
Сообщений: 23

Цитата:
Ап
А не надо апать, надо вопрос по другому задать

ПэХаПэшный код вообще не интересен.....интересно знать ответ сервера, а именно:
1. Заголовки (в частности Content-Type)
2. Тело ответа

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

var xml = ajaxObjects[ajaxIndex].response;

В проблемном браузере в переменную попадает, то что тебе надо...
сделай alert(xml).
Это твой код?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX + Firefox некорректное отображение checkbox shu7 Firefox/Mozilla 2 26.06.2015 14:23
Ajax разбор метода mycoding jQuery 14 21.05.2010 10:57
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
jQuery 1.2.6 Ajax: траблы в FireFox и Opera Russell jQuery 5 28.05.2009 22:22
AJAX & XML slavonbl AJAX и COMET 3 10.07.2008 22:30