代码之家  ›  专栏  ›  技术社区  ›  TheKillerCH

从javascript获取一个值并用Ajax将其发送到php脚本

  •  0
  • TheKillerCH  · 技术社区  · 7 年前

    我想使用apache2和php作为我的raspberry pi web服务器,因为我已经有很多php文件可以使用了。 当我在我的网站上移动一个滑块,而不刷新页面时,我想将新值发送到php/python脚本。

    结构内部:

     /var/www/html/SCRIPTS     (php/python scripts)
     /var/www/html/WEB         (web interface)
     /var/www/html             (an index that redirects inside WEB folder)
    

    我的索引文件包含以下代码。我有一个CSS来创建三个滑块。当'oninput'时,我想调用向服务器发送字符串的脚本。脚本包含函数edited();

        <title>JMT Botler 1: admin panel</title>
    
     <style type="text/css">
      .slidecontainer {
        width: 100%; /* Width of the outside container */
      }
      .slider {
        -webkit-appearance: none;  /* Override default CSS styles */
        appearance: none;
        width: 100%; /* Full-width */
        height: 25px; /* Specified height */
        background: #d3d3d3; /* Grey background */
        outline: none; /* Remove outline */
        opacity: 0.7; /* Set transparency (for mouse-over effects on hover) */
        -webkit-transition: .2s; /* 0.2 seconds transition on hover */
        transition: opacity .2s;
      }
     </style>
            <script type="text/javascript">
              function edited(str) {
                  var xmlhttp = new XMLHttpRequest();
                  xmlhttp.onreadystatechange = function() {
                  if (this.readyState == 4 && this.status == 200) {
                    document.getElementById("demo").innerHTML = this.responseText;
                  }
                };
              xmlhttp.open('GET', '/var/www/html/SCRIPTS/test_rec.php?v=' + str, true);
              xmlhttp.send();
              }
            }
          </script>
    
      </head>
      <body>
    
           <div align="center">
             <p>STEERING</p>
           </div>
           <div class="slidecontainer">
             <input type="range" min="1" max="179" value="90" class="slider" onchange="edited(this.value)" id="myRange" width="500">
           </div>
           <div align="center">
             <p>Value: <span id="steering">-1</span></p>
           </div>
    
           <div align="center">
             <p>THROTTLE</p>
           </div>
           <div class="slidecontainer">
             <input type="range" min="1" max="179" value="90" class="slider" id="myRange2" width="500">
           </div>
           <div align="center">
             <p>Value: <span id="throttle">90</span></p>
           </div>
    
           <div align="center">
             <p>STER OPT</p>
           </div>
           <div class="slidecontainer">
             <input type="range" min="1" max="179" value="90" class="slider" id="myRange3" width="500">
           </div>
           <div align="center">
             <p>Value: <span id="steropt">90</span></p>
           </div>
    
          <div align="center">
             <p>Value: <span id="demo"></span></p>
           </div>
    
    
    
        <script type="text/javascript">
          var slider = document.getElementById('myRange');
          var output = document.getElementById('steering');
          var slider2 = document.getElementById('myRange2');
          var output2 = document.getElementById('throttle');
          var slider3 = document.getElementById('myRange3');
          var output3 = document.getElementById('steropt');
          var vs = slider.value;
          var vt = slider2.value;
          var so = slider3.value;
          output.innerHTML = slider.value;
          output2.innerHTML = slider2.value;
          output3.innerHTML = slider3.value;
          slider.oninput = function() {
            steering.innerHTML = slider.value - 90;
            edited("OPT");
          }
          slider2.oninput = function() {
            throttle.innerHTML = slider2.value - 90;
            edited("OPT");
          }
          slider3.oninput = function() {
            steropt.innerHTML = slider3.value - 90;
            edited("OPT");
          }
        </script>      
     </body></html>
    

    很明显,这是行不通的。这是我第一次建造这样的建筑。我偏离了航线多少?

     <?php
      $ric=$_GET['v'];
      $my_file = 'log.txt';
      $handle = fopen($my_file, 'a+');
      $data = 'NUOVO DATO RICEVUTO';
      fwrite($handle, $data);
      $new_data = "\n".$ric;
      fwrite($handle, $new_data);
     ?>
    

    提前谢谢!

    1 回复  |  直到 7 年前
        1
  •  0
  •   Omagerio    7 年前

    我认为问题在于:

    xmlhttp.open('GET', '/var/www/html/SCRIPTS/test_rec.php?v=' + str, true);
    

    你确定这个请求是正确的吗? 通常情况下, /var/www/html 尝试用以下方法更改:

    xmlhttp.open('GET', '/SCRIPTS/test_rec.php?v=' + str, true);
    

    另外,第三个参数 open is deprecated .