2017-01-23 123 views
0

我有(工作):第一页 - 用户输入字符串并按提交按钮。此参数通过会话发送到运行某种脚本命令并显示结果(输出)的其他页面。这里的代码,使之更加明确:php javascript刷新页面

第一页:

<?php 
    session_start(); 
    echo "<input type=\"text\" id=\"userInput\">"; 
    echo "<br><button onclick=\"submit()\">Submit</button>"; 
    $_SESSION[''] = $input; 
?> 

<script type="text/javascript"> 
    var submit = function() { 
     input = document.getElementById("userInput").value; 
     window.open ('secondPage.php?userInput=' + input,'_self',false);} 
</script> 

第二页:

<?php 
    session_start(); 
    $input = $_GET['userInput']; 
    $command = "./myScript.py $input"; 
    system($command, $retval); 
?> 

现在,我想有两个在一个单一页面,即当页面打开时,输入字段和按钮将位于顶部,在它下面将是第二页命令的输出,每当用户“提交”另一个输入时(第一次userInput将为空),刷新该输入字段和按钮。希望很明显,或多或少。任何帮助?

+0

那么你为什么不尝试和代码的东西做 – RiggsFolly

+0

似乎会有小点提交页面,你可以做一切与一些JavaScript并没有页面提交 – RiggsFolly

+0

你可能会更具体吗? – user1418018

回答

1

我想这是你所需要的:

<?php 
    session_start(); 

    // We check if there's POST data 'userInput' 
    if (isset($_POST['userInput'])) { 
     // 'userIput' exists, we make our process and return what we need. 
     echo 'User inputed '.$_POST['userInput']."<br>"; 
    } else { 
     // 'userIput' does not exists, displaying page content. 
     ?> 
     <input id="userInput" type="text" /><button id="btn">Send</button> 
     <div id="result"> 
      <!-- Displaying AJAX results here --> 
     </div> 
     <script type="text/javascript"> 

      // Send an XMLHttpRequest 
      function sendRequest(url, postData, callback) { 
       var req = new XMLHttpRequest(); 
       if (!req) 
        return; 
       var method = (postData) ? "POST" : "GET"; 
       req.open(method,url,true); 
       if (postData) 
        req.setRequestHeader('Content-type','application/x-www-form-urlencoded'); 
       req.onreadystatechange = function() { 
        if (req.readyState != 4) 
         return; 
        if (req.status != 200 && req.status != 304) { 
         return; 
        } 
        callback(req); 
       } 
       if (req.readyState == 4) 
        return; 
       req.send(postData); 
      } 

      // We bind the 'click' event on the button 
      document.getElementById("btn").addEventListener('click', function(e) { 
       var input = document.getElementById("userInput").value; 
       // Use AJAX 
       sendRequest("#", 'userInput='+input, function(data) { 
        // Data returned, inserting in our 'result' div. 
        var resDiv = document.getElementById("result"); 
        resDiv.innerHTML = resDiv.innerHTML + data.responseText; 
       }); 
      }); 
     </script> 

     <?php 
    } 
+0

谢谢麦克托塔托爵士,这非常有帮助。 – user1418018

+0

不客气!你应该明确地看看jQuery,它为你的DOM元素,事件监听器提供了一个很好的访问接口,并且还简化了一个LOT ajax查询;) –