Конфликт с код

mitko876

Registered
Здравейте имам една js заявка:

Код:
<script type="text/javascript" src="/ajax.js"></script>
<script>

function getr(chisl, from, to)
		{
			    subject_id = "rest";
                            document.getElementById(subject_id).innerHTML = "<center><img src=\"/images/load.gif\" alt\"\"></center>";
  			    http.open("GET", "/index.php?p=other&cat=conv&chisl=" + chisl + "&from=" + from + "&to=" + to, true);

			http.onreadystatechange = handleHttpResponse;
			http.send(null);
			

		}
		
</script>
, като ajax.js е:
Код:
function handleHttpResponse() {
		if (http.readyState == 4) {
			if(subject_id != '') {
                                document.getElementById(subject_id).innerHTML = http.responseText;
                        }
		}
	}
	function getHTTPObject() {
		var xmlhttp;
		/*@cc_on
		@if (@_jscript_version >= 5)
			try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (E) {
					xmlhttp = false;
				}
			}
		@else
		xmlhttp = false;
		@end @*/
		if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
			try {
				xmlhttp = new XMLHttpRequest();
			} catch (e) {
				xmlhttp = false;
			}
		}
		return xmlhttp;
	}
	var http = getHTTPObject(); // We create the HTTP Object
, но когато направя две заявки на една страница и и двете получават резултата на втората?
 
и това местиш в
първата
Код:
http.onreadystatechange = function () {
      if (http.readyState == 4) {
         if(subject_id != '') {
                                document.getElementById(subject_id).innerHTML = http.responseText;
                        }
      }
   }
за да вземе http променливата
на мястото на
http.onreadystatechange = handleHttpResponse;
 
Ако става дума за това не работи

Код:
function handleHttpResponse() { 
var http = getHTTPObject(); // We create the HTTP Object 
http.onreadystatechange = function () { 
      if (http.readyState == 4) { 
         if(subject_id != '') { 
                                document.getElementById(subject_id).innerHTML = http.responseText; 
                        } 
      } 
   }
   } 
   function getHTTPObject() { 
      var xmlhttp; 
      /*@cc_on 
      @if (@_jscript_version >= 5) 
         try { 
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
         } catch (e) { 
            try { 
               xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
            } catch (E) { 
               xmlhttp = false; 
            } 
         } 
      @else 
      xmlhttp = false; 
      @end @*/ 
      if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { 
         try { 
            xmlhttp = new XMLHttpRequest(); 
         } catch (e) { 
            xmlhttp = false; 
         } 
      } 
      return xmlhttp; 
   }
 
Код:
   function getHTTPObject() {
      var xmlhttp;
      /*@cc_on
      @if (@_jscript_version >= 5)
         try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
               xmlhttp = false;
            }
         }
      @else
      xmlhttp = false;
      @end @*/
      if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
         try {
            xmlhttp = new XMLHttpRequest();
         } catch (e) {
            xmlhttp = false;
         }
      }
      return xmlhttp;
   }
Код:
<script type="text/javascript" src="/ajax.js"></script>
<script>

function getr(chisl, from, to)
      {
            var http = getHTTPObject();
             subject_id = "rest";
                            document.getElementById(subject_id).innerHTML = "<center><img src=\"/images/load.gif\" alt\"\"></center>";
               http.open("GET", "/index.php?p=other&cat=conv&chisl=" + chisl + "&from=" + from + "&to=" + to, true);

         http.onreadystatechange = function () {
      if (http.readyState == 4) {
         if(subject_id != '') {
                                document.getElementById(subject_id).innerHTML = http.responseText;
                        }
      }
   }
         http.send(null);
         

      }
      
</script>
 
не бачка или
пробвай да преместиш onreadystatechangeпреди Open защото при мене не бачкаше заради това
ето ти 1 пр как аз съм си направил чат AJAX рефрешва на 5 сек + може да се изпраща съобщение пак с една функция
Код:
var lasttime = <?php echo time(); ?>;
function GetXmlHttpObject()
{
    var xmlHttp=null;
    try
     {
         // Firefox, Opera 8.0+, Safari
         xmlHttp=new XMLHttpRequest();
     }
    catch (e)
     {
         // Internet Explorer
         try
          {
              xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
         catch (e)
          {
              xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
     }
    return xmlHttp;
}
function RefreshMessage()
{
	var x=GetXmlHttpObject();
	lasttime += 5;
	x.onreadystatechange=  function ()
{
	if( x.readyState == 4)
	{
		var text = x.responseText;
		if ( text )
		{
			document.getElementById("msgs").innerHTML = text;
			EndScrollMsg();
		}
	}
} 
	x.open('GET', ('msg.php?act=show&date='+(lasttime-5)).replace(/&/g, "&"), true);
	x.send(null);
}
function SendMsg(form)
{
	var x = GetXmlHttpObject();
	x.open('POST', 'msg.php?act=send', true);
	var parrams = 'message='+encodeURIComponent(form.message.value)+'&allow_bbcode='+((form.allow_bbcode.checked == true) ? 1 : 0)+'&allow_smilies='+((form.allow_smilies.checked == true) ? 1 : 0)+'&allow_magic_url='+((form.allow_magicurl.checked == true) ? 1 :0);
	parrams = parrams.replace(/&/g, "&");
	x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	x.setRequestHeader('Content-Length', parrams.length);
	x.send(parrams);
	form.message.value = '';
	var t = lasttime;
	lasttime = 0;
	RefreshMessage();
	lasttime = t;
}
function EndScrollMsg(){var objDiv = document.getElementById("msgs");objDiv.scrollTop = objDiv.scrollHeight;}
setInterval("RefreshMessage()", 5000);
тествано под IE 6, Opera & FF
 

Back
Горе