javascript-使用Ajax从实时PHP和Python输出更新页面内容
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-使用Ajax从实时PHP和Python输出更新页面内容,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4611字,纯文字阅读大概需要7分钟。
内容图文
![javascript-使用Ajax从实时PHP和Python输出更新页面内容](/upload/InfoBanner/zyjiaocheng/685/3f33922abf284f9a97a711dd23510e77.jpg)
长期用户,首次申请者.我从社区中学到了很多,而且我喜欢这个网站.
所以这就是我的目标.我想要一个在后端运行ping命令的Web界面.理想情况下,我想要一个网站,该网站的文本输入可让您输入IP地址或域,运行该命令的按钮以及从PHP运行以实际运行ping命令的python脚本.棘手的部分是使输出在命令行上输出时可以实时打印到网站上.我想以这种方式做为将来验证该概念并最终使用不同的iperf参数的方法.
我建立了一个小的PHP页面,“从技术上”完成了工作,但是我想不出如何仅在单击按钮时调用PHP脚本.由于它是一个PHP页面,因此每当页面加载时便会运行.因此,在进行了一些研究之后,我发现我正在寻找ajax jquery.我花了大约2天的时间尝试各种不同的事情,这些事情使我与我真正地融为一体,但似乎我正在围绕解决方案跳舞.
从对ajax的了解中,我实质上需要一个按钮,该按钮运行一个与我的工作php脚本链接的ajax函数.我可以通过它来运行脚本,但不能以实时/连续方式来更新页面内容.仅在命令完成运行时.
这是我的php页面,它会执行所需的操作,但每次页面加载/重新加载时都会执行.不理想.我希望脚本仅在按下按钮时运行.
liveping.php:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form action="liveping.php" id="ping" method="post" name="ping">
Domain/IP Address: <input name="domain" type="text"> <input name="ping" type="submit" value="Ping">
</form><?php
if (isset($_POST['ping'])) {
function liveExecuteCommand($cmd)
{
while (@ ob_end_flush()); // end all output buffers if any
$proc = popen("$cmd 2>&1", 'r');
$live_output = "";
$complete_output = "";
while (!feof($proc))
{
$live_output = fread($proc, 4096);
$complete_output = $complete_output . $live_output;
echo "<pre>$live_output</pre>";
@ flush();
}
pclose($proc);
}
}
$domain = $_POST['domain'];
$pingCmd = "python /var/www/html/ping.py ".$domain;
if (isset($_POST['ping'])) {
liveExecuteCommand($pingCmd);
}
?>
</body>
</html>
ping.py:
#!/usr/bin/python
import cgi
import os
import sys
ping = "ping -c 5 -W 2 "+sys.argv[1]
os.system(ping)
我尝试过的一些事情:
<html>
<head>
<script>
var ajax = new XMLHttpRequest();
ajax.onreadystatechange = setInterval(function() {
if (ajax.readyState == 4) {
document.getElementById('content').innerHTML = ajax.responseText;
}
},100);
function updateText() {
ajax.open('GET', 'ajax.php');
ajax.send();
}
</script>
</head>
<body>
<button onclick="updateText()">Click Me</button>
<div id="content">Nothing here yet.</div>
</body>
</html>
要么
<!DOCTYPE html>
<html>
<body>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#load_tweets').load('ajax.php').fadeIn("slow");
}, 1000); // refresh every 10000 milliseconds
</script>
</head>
<div id="load_tweets"> </div>
</body>
</html>
与ajax.php
<?php
while (@ ob_end_flush()); // end all output buffers if any
$proc = popen("ping -c 5 -W 2 google.com", 'r');
$live_output = "";
$complete_output = "";
while (!feof($proc))
{
$live_output = fread($proc, 4096);
$complete_output = $complete_output . $live_output;
echo "<pre>$live_output</pre>";
@ flush();
}
pclose($proc);
?>
谢谢你的帮助!
解决方法:
您不需要python即可显示ping结果.仅两个PHP文件就足够了.
> index.php将具有AJAX功能以及表单.
> ajax.php将具有用于ping指定域地址的代码.
我担心使用jQuery可能无法捕获实时提要.因为它没有任何onreadystatechange.因此,在这种情况下,您可能需要使用原始JavaScript.这是一个工作示例:
index.php:
<!DOCTYPE html>
<html>
<head>
<title>Ping AJAX</title>
</head>
<body>
<div>
Domain/IP Address: <input id="domain" type="text">
<input id="ping" type="button" value="Ping">
</div>
<div id="result"></div>
<script>
function updateText(domain) {
var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function() {
if (this.readyState == 3) {
var old_value = document.getElementById("result").innerHTML;
document.getElementById("result").innerHTML = this.responseText;
}
};
var url = 'ajax.php?domain='+domain;
ajax.open('GET', url,true);
ajax.send();
}
document.getElementById("ping").onclick = function(){
domain = document.getElementById("domain").value;
updateText(domain);
}
</script>
</body>
</html>
ajax.php:
<?php
if (isset($_GET['domain'])) {
function liveExecuteCommand($cmd)
{
while (@ ob_end_flush()); // end all output buffers if any
$proc = popen($cmd, 'r');
$live_output = "";
$complete_output = "";
while (!feof($proc))
{
$live_output = fread($proc, 4096);
$complete_output = $complete_output . $live_output;
echo "<pre>$live_output</pre>";
@ flush();
}
pclose($proc);
}
$domain = $_GET['domain'];
$pingCmd = "ping ".$domain;
liveExecuteCommand($pingCmd);
}
else{
echo "No post request";
}
?>
输出:
免责声明:
由于我当前正在使用Windows操作系统,因此ping命令已更改.根据您的操作系统进行更新.
作为第一次提问者,您已经对问题进行了巧妙的描述,并展示了解决问题的努力.我真的很感激.
内容总结
以上是互联网集市为您收集整理的javascript-使用Ajax从实时PHP和Python输出更新页面内容全部内容,希望文章能够帮你解决javascript-使用Ajax从实时PHP和Python输出更新页面内容所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。