AJAX въпрос

StormBreaker

Registered
Имам ето този код долу:

Код:
		<script type="text/javascript">
		var xmlHttp
		
		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 request_data(varr, vall, target)
		{
		    if (vall.length==0)
 		     {
 		         return
 		     }
 		     
 		   xmlHttp=GetXmlHttpObject()
 		   if (xmlHttp==null)
  		    {
  		        alert ("Браузъра не поддържа HTTP Request")
  		        return
 		     }
 		   var url="sapphire/functions.php"
 		   url=url+"?" + varr + "=" + vall

 		   xmlHttp.onreadystatechange=stateChanged(target)
 		   xmlHttp.open("GET",url,true)
 		   xmlHttp.send(null)
		}
		
		function stateChanged(target)
		{
  		  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
  		   {
  		       target=xmlHttp.responseText
  		   	   alert('test')
		   }
		}
		</script>
		<div id="12345">test</div>
		<script type="text/javascript">
			request_data("function", "test", document.getElementById("12345").innerHTML);
		</script>

Проблема е, че не взима информация от страницата functions.php... Като я отворя директно по същия начин с GET ми изкарва текста, но пробвам ли така с AJAX нищо не се получава. Сложих тоя alert('test') за дебъг, но той не ми се появява. Може ли някой да ми помогне да се оправя с това? :roll:
 
StormBreaker каза:
Код:
		<script type="text/javascript">
		var xmlHttp;
		
		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 request_data(varr, vall, target)
		{
		    if (vall.length==0)
 		     {
 		         return
 		     }
 		     
 		   xmlHttp=GetXmlHttpObject()
 		   if (xmlHttp==null)
  		    {
  		        alert ("Браузъра не поддържа HTTP Request")
  		        return
 		     }
 		   var url="sapphire/functions.php";
 		   url=url+"?" + varr + "=" + vall;

 		   xmlHttp.onreadystatechange=stateChanged(target);
 		   xmlHttp.open("GET",url,true);
 		   xmlHttp.send(null);
		}
		
		function stateChanged(target)
		{
  		  if (xmlHttp.readyState==4)
  		   {
  		       target=xmlHttp.responseText;
  		   	   alert('test');
		   }
		}
		</script>
		<div id="12345">test</div>
		<script type="text/javascript">
			request_data("function", "test", document.getElementById("12345").innerHTML);
		</script>
Мисля че беше забравил доста ';' ако и така не стане виж дали пътя до файла е верен! :(
 
Пиша за грешките който видях, без да тествам.

1-во.
Код:
xmlHttp.onreadystatechange=stateChanged(target)
така викана функцията връща грешка, трябва да е без оператор
Код:
xmlHttp.onreadystatechange=stateChanged
или другия варянт за да е с оператор го правиш така:

Код:
xmlHttp.onreadystatechange=function { stateChanged(target) }

след това

Код:
function stateChanged(target)
      {
          if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
           {
               target=xmlHttp.responseText
                 alert('test')
         }
      }

няма да ти върне резултат.

Код:
      function stateChanged(target)
      {
          if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
           {
               result=xmlHttp.responseText
			   document.getElementById(target).innerHTML = result
                 alert('test')
         }
      }

Код:
<script type="text/javascript">
         request_data("function", "test", "12345");
      </script>
 
Първо работата е там, че искам чрез аргумент да му показвам различни неща, в които да пише. Пр. document.getElementById("test").innerHTML, document.getElementById("test222").value и т.н.

Пробвах и така, както си го дал - пак не работи.

Ето виж. http://213.240.206.32/sapphireengine/test2.php Провери и файловете - там са си...

Трябва да изпише TTTTTTTTTTTTTTTTTT не test :lol:

Ето кода и на functions.php , но съм сигурен, че не е от него:

Код:
<?php
if ( !empty($_GET['function']) && !function_exists($_GET['function']) )
	die('Sapphire:: function not declared');
elseif (!empty($_GET['function']))
{
	echo call_user_func('test');
}
else
	echo "BBBBBBBB";
?>
<?php
// functions here...
function test()
{
$test = "TTTTTTTTTTTTTTTTTT";
echo $test;
}
//end
?>
 
Код:
<script type="text/javascript">
      var xmlHttp
      
      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 request_data(varr, vall, target)
      {
          if (vall.length==0)
            {
                return
            }
            
          xmlHttp=GetXmlHttpObject()
          if (xmlHttp==null)
            {
                alert ("Браузъра не поддържа HTTP Request")
                return
            }
          var url="sapphire/functions.php"
          url=url+"?" + varr + "=" + vall

          xmlHttp.onreadystatechange=function() { stateChanged(target) }
          xmlHttp.open("GET",url,true)
          xmlHttp.send(null)
      }
      
      function stateChanged(target)
      {
          if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
           {
               target=xmlHttp.responseText
                 alert(target)
         }
      }
      </script>
      <div id="12345">test</div>
      <script type="text/javascript">
         request_data("function", "test", document.getElementById("12345").innerHTML);
      </script>
 
request_data("function", "test", document.getElementById("12345").innerHTML);

Неможеш така да промениш свойството на обекта. Трябва да подадеш обекта и тогава да го промениш. Кода по нагоре незнае, че е обект и го интрепретира като стойността на това свойство, като текст;

request_data("function", "test", document.getElementById("12345").innerHTML);

ако му подадеш

request_data("function", "test", document.getElementById("12345"));

и после

target.innerHTML = .... responseText;

воала !
 

Back
Горе