【问题标题】:Ajax, change variable after loadAjax,加载后更改变量
【发布时间】:2015-04-13 08:43:10
【问题描述】:

我有这个代码:

<?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 并回显 $i 的值。我将 $i 的值加 1,并且我希望当我第二次单击时该值是 2,依此类推,将 $i 的值加 1。但是它总是输出 1。输出是 111111111,我希望得到 1234567 等。非常感谢您提供的任何帮助。

【问题讨论】:

  • 是xmlhttp.open("GET","load.php?i="+ii,true);或者它可能是 xmlhttp.open("GET","load.php?i="+i,true);请检查一次
  • 对不起它的 xmlhttp.open("GET","load.php?i="+i,true);
  • 请编辑您的代码并写在那里。令人困惑
  • 在小提琴上显示此代码。它根本不起作用
  • 我已经编辑过了。当我单击它时,它会将 1 附加到 div。

标签: javascript php ajax variables load


【解决方案1】:

试试这个。我修改了你的代码

          <?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 ; 
?>

【讨论】:

  • 感谢您的回答,但我需要的是 ajax。我正在尝试制作动态滚动内容,并且该内容在服务器上,因此 javascript 不足以解决我的问题。
  • 你想在服务器端计算所有的东西?
【解决方案2】:
<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 响应以供进一步增加。

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    如果你只想使用 php 来检查 "i" 你可以使用 $_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"];
    ?>
    

    【讨论】:

      猜你喜欢
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 2012-04-12
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多