2013-02-15 73 views
0

我有一個連接到telnet端口,並打開一些診斷和出口,並打開另一個telnet端口一個bash腳本來監視它的腳本工作正常,我可以用jQuery和Ajax執行,但我有麻煩不斷更新div與結果我不想繼續調用相同的命令時,重新加載PHP的div只是刷新結果的幫助和建議讚賞代碼如下jQuery的AJAX的bash的telnet更新DIV腳本不斷

bash腳本是非常基本的:

#!/bin/bash 

{ 
sleep 2 
echo diag gps info 
sleep 2 
echo exit 
} | telnet 10.10.2.1 1700 

telnet 10.10.2.1 1800 

HTML/PHP文件:

<!DOCTYPE HTML > 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>diag stuff</title> 
</head> 
<body> 
<button id="startGpsDiag" >Start gps diag</button> 

<div id="results"></div> 

</body> 
<!-- <script langauge="JavaScript" src="{#javaScriptDir#}/jquery-min-1.8.js"> </script> --> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script> 

jQuery(document).ready(function() { 
    jQuery.ajaxSetup({cache: false});  

    jQuery("#startGpsDiag").click(function () { 
     // alert('true'); 
     callGpsDiag();    
    });   

    function callGpsDiag(){ 
    jQuery.ajax({ 
       type: "POST", 
       url: "gpsDiag.php", 
       data: "execGpsDiag=1", 

       success: function(data) { 
       alert('success'); 
       jQuery('#results').html(data); 

       setInterval(function() { 
         jQuery('#results').html(data); 
       },3000);  
       }, 
       error: function() { 
       // alert('fail'); 
       }        
    });  
}    
});  
</script> 

PHP邏輯文件:

if(isset($_POST['execGpsDiag'])) { 
    echo system('./gpsdiag.sh'); 
} 

我可能要編輯bash的文件,並刪除最後一個telnet連接它是一個我要監視並將其與移動到PHP的邏輯,如果我們不最初設置診斷監視器端口

我也試着做echo system(telnet 10.10.1.2 1800) 並自行嘗試setinterval只加載監控端口,但不能得到任何結果

,如果我跑gpsDiag.php命令行用要麼只是echo system(telnet 10.10.1.2 1800)echo system('./gpsdiag.sh');它的工作原理,並顯示結果屏幕。

回答

0

您需要設置超時並調用超時回調內部的功能。

function callGpsDiag(){ 
    jQuery.ajax({ 
    type: "POST", 
    url: "gpsDiag.php", 
    data: "execGpsDiag=1", 
    success: function(data){ 
     alert('success'); 
     jQuery('#results').html(data); 

     setTimeout(function(){ 
      callGpsDiag(); 
     },3000); 
    }, 
    error: function() { 
     //alert('fail'); 
    } 
    }); 

} 
+0

它可以幫助它不斷調用頁面,但仍然無法從telnet端口輸出顯示我知道這可能也許我需要首先將輸出寫入文件? – user1930591 2013-02-15 19:04:40

+0

我需要對輸出緩衝區做些什麼嗎? – user1930591 2013-02-15 19:09:38

+0

考慮用'nc'替換'telnet'(你可能需要安裝「netcat」)。它以同樣的方式工作,但在非交互式使用方面,它更不模糊。 – 2013-02-15 19:17:16