2015-04-13 5 views
2

у меня есть этот код:Ajax, изменение переменной после загрузки

<?php $i=12; 
?> 
<html> 
    <head></head> 
<body> 
    <div id="prueba"></div> 
<script type="text/javascript"> 
    function loadXMLDoc() 
    { 
     var i = "<?php echo $i; ?>"; 
     var xmlhttp; 
     if (window.XMLHttpRequest){ 
      xmlhttp=new XMLHttpRequest(); 
     } 
     else { 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange=function() 
     xmlhttp=new XMLHttpRequest(); 
     { 

      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
       { 
    document.getElementById('prueba').innerHTML+=xmlhttp.responseText; 
       } 
      } 
      xmlhttp.open("GET","load.php?i="+i,true); 
      xmlhttp.send(); 

     } 
     window.onclick =loadXMLDoc; 
    </script> 
</body> 
</html> 

И мой файл load.php это:

<?php 
    $i = $_REQUEST["i"]; 
    echo $i; 
    $i=$i+1; 
    echo "<?php $i=".$i."?>"; 
?> 

Когда я нажимаю на странице он загружает load.php и его echo вне значение $ i. Я добавляю 1 к значению $ i, и я хочу, чтобы, когда я нажимаю второй раз, значение равно 2, и так далее, добавляя 1 к значению $ i. Однако он всегда выводит 1. Выход 111111111, и я хочу получить 1234567 и т. Д. Я очень ценю любую помощь, которую вы можете предоставить.

+0

ли это xmlhttp.open ("GET" , "load.php I =?" + II, правда); или это может быть xmlhttp.open («GET», «load.php? i =» + i, true); пожалуйста, уточните один раз –

+0

извините его xmlhttp.open («GET», «load.php? i =» + i, true); –

+0

отредактируйте свой код и напишите там. это запутывает –

ответ

0

попробуйте это. Я изменил код

  <?php $i=12; 
    ?> 
    <html> 
     <head></head> 
    <body> 
     <div id="prueba"></div> 
    <script type="text/javascript"> 
     var i = "<?php echo $i; ?>"; 
     function loadXMLDoc() 
     { 
      var xmlhttp; 
      if (window.XMLHttpRequest){ 
       xmlhttp=new XMLHttpRequest(); 
      } 
      else { 
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange=function() 
      xmlhttp=new XMLHttpRequest(); 
      { 

       if (xmlhttp.readyState==4 && xmlhttp.status==200) 
        { 
     document.getElementById('prueba').innerHTML=xmlhttp.responseText; 
        } 
       } 
       i=i+1; 
       var pruebaInnerHtml=document.getElementById('prueba').innerHTML; 
pruebaInnerHtml=pruebaInnerHtml+i; 
       xmlhttp.open("GET","load.php?ihtml="+pruebaInnerHtml,true); 
       xmlhttp.send(); 

      } 
      window.onclick =loadXMLDoc; 
     </script> 
    </body> 
    </html> 

И load.php файл это:

<?php 
    $i = $_REQUEST["ihtml"]; 
    echo $i ; 
?> 
+0

Thanx для вашего ответа, но мне нужен ajax. Я пытаюсь сделать динамический прокручиваемый контент, и этот контент находится на сервере, поэтому javascript недостаточно для моей проблемы. –

+0

Вы хотите рассчитать все на стороне сервера? – Maverick

0
<html> 
<head> 
<script type="text/javascript"> 
function loadXMLDoc() 
{ 
    var i = document.getElementById("pruebaVal").value; 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
     } 
    else 
     {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    xmlhttp.onreadystatechange=function() 
     { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     document.getElementById("prueba").innerHTML=xmlhttp.responseText; 
     document.getElementById("pruebaVal").value=xmlhttp.responseText; 
     } 
     } 
    xmlhttp.open("GET","load.php?i="+i,true); 
    xmlhttp.send(); 
    } 
    window.onclick =loadXMLDoc; 
</script>  
</head> 
<body > 
<input type="hidden" id="pruebaVal" value="1"> 
<div id="prueba"></div> 
</body> 
</html> 

И ниже load.php

<?php 
$i = $_REQUEST["i"]; 
$i=$i+1; 
echo $i; 
?> 

Я переместил код Ajax для Головная часть корпуса. И используя скрытую переменную для инициализации var i, а также для хранения ajax-ответа для дальнейших приращений.

Надеюсь, это поможет.

0

Если вы хотите использовать только PHP, чтобы проверить "я" вы можете использовать $ _SESSION:

<?php 
     session_start(); 
     $_SESSION["i"]=0; 
    ?> 

<html> 
    <head></head> 
<body> 

    <div id="prueba"></div> 

<script type="text/javascript"> 
    function loadXMLDoc() 
    { 
     var xmlhttp; 
     if (window.XMLHttpRequest) 
     { 
      xmlhttp=new XMLHttpRequest(); 
     } 
     else 
     { 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange=function() 
     { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
       document.getElementById("prueba").innerHTML+=xmlhttp.responseText; 
      } 
    } 

     xmlhttp.open("GET","load.php",true); 
     xmlhttp.send(); 
    } 

    window.onclick=loadXMLDoc; 
    </script> 
</body> 
</html> 

И в load.php:

<?php 
    session_start(); 
    $_SESSION["i"] = $_SESSION["i"]+1; 
    echo $_SESSION["i"]; 
?> 
Смежные вопросы