首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax,加载后更改变量

问Ajax,加载后更改变量
EN

Stack Overflow用户
提问于 2015-04-13 16:43:10
回答 3查看 283关注 0票数 2

我有这样的代码:

代码语言:javascript
复制
<?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文件是这样的:

代码语言:javascript
复制
<?php
    $i = $_REQUEST["i"]; 
    echo $i;
    $i=$i+1;
    echo "<?php $i=".$i."?>";
?>

当我点击页面时,它会加载load.php,并返回$i的值。我将$i的值加1,当我第二次单击时,我希望该值为2,依此类推,将$i的值加1。然而,它总是输出1。输出是111111111,我希望得到1234567等。我真的很感谢你能提供的任何帮助。

EN

回答 3

Stack Overflow用户

发布于 2015-04-13 17:33:08

尝尝这个。我已经修改了你的代码

代码语言:javascript
复制
          <?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文件是这样的:

代码语言:javascript
复制
<?php
    $i = $_REQUEST["ihtml"];
    echo $i ; 
?>
票数 0
EN

Stack Overflow用户

发布于 2015-04-13 17:53:44

代码语言:javascript
复制
<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

代码语言:javascript
复制
<?php
$i = $_REQUEST["i"]; 
$i=$i+1;
echo $i;
?>

我已经将ajax代码从body部分移动到Head部分。以及使用隐藏变量来初始化var i,并且还存储ajax响应以供进一步递增。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2015-04-13 18:35:18

如果你想只使用php来检查"i“,你可以使用$_SESSION:

代码语言:javascript
复制
    <?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中:

代码语言:javascript
复制
<?php
    session_start();
    $_SESSION["i"] = $_SESSION["i"]+1;
    echo $_SESSION["i"];
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29601203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档