我正在使用php和javascript定期在页面的一部分上生成输出。我是js的新手,所以请原谅任何迟钝的问题。
原始的PHP代码是;
defined?
这曾经是我主页的一部分,但我把它移到了自己的名为screenGen.php的文件中。我的主页可以毫无问题地调用它;
<?php
$data = file_get_contents("http://" . $phoneControlUsername .":" . $phoneControlPassword . "@" . $ip . "/CGI/Screenshot");
$filename = "tempFiles/phoneScreenshot$dev";
file_put_contents($filename, $data);
echo "<img src=" . $filename . " style='width:100%;'>"
?>
我需要每五秒钟生成一次这个特殊代码。因此,在阅读javascript和php如何一起使用时,我提出了这个问题;
require('screenGen.php');
当然,这不起作用。我无法找到关于如何做这样的事情的正确方向,因为对于这个主题是新手,我不知道如何寻找它。如何定期生成screenGen.php?
答案 0 :(得分:1)
您需要的解决方案之一就是使用请求,因为它们会让您的服务器重新生成screenGen的输出。
在您的javascript源代码中,您可以:
通过对screenGen.php文件执行GET请求,替换require
变量声明中的screenGen
。您将在screenGen变量中存储对请求的响应,然后按照您的方式编写它。
总结:
echo "<img src=" . $filename . " style='width:100%;'>"
)代码示例:
HTTP Get request辅助功能(取自SO):
function httpGet(theUrl)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
xmlHttp.send( null );
return xmlHttp.responseText;
}
将调用脚本的JAVASCRIPT:
window.setInterval(function()
{
screenGen = httpGet('<domain>/<script_folder>/screenGen.php');
document.write(screenGen);
}, 5000);
答案 1 :(得分:0)
您可以使用AJAX获取您的php结果,然后将结果附加到页面正文中,如下所示:
getImage("screenGen.php");
用法:
setTimeout
我使用setInterval
而不是document.body.innerHTML +=
,因为AJAX是异步的,这样您可以确保在返回上一个请求后5秒进行下一次调用。
我还使用document.write
而不是in = IntegerDigits[Round[ Pi 10^9 ], 2];
mask = RandomSample[ConstantArray["L", 28]~Join~ConstantArray["U", 4],32];
subs[in_, mask_] := Module[ {p = Position[mask, "U"]} ,
ReplacePart[in, Rule @@@ Transpose[{p, #}]] & /@
Tuples[{0, 1}, Length@p]]
subs[in, mask]
,因为后者在HTML文档完全加载后重写了整个页面(除非是这样)。
答案 2 :(得分:0)
您可以使用JQuery加载容器内的动态内容。 因此将child附加到root容器并加载从PHP生成的内容
<div id="images"></div>
<script>
window.setInterval(function()
{
var el = $('<div></div>');
$('#images').append(el);
el.load("/screenGen.php");
}, 5000);
</script>
答案 3 :(得分:0)
我找到的答案比发布的答案简单得多。
1)在您的服务器上安装jquery。如果您使用的是Debian,则可以使用sudo apt-get install libjs-jquery
2)在PHP中;
<div id="auto"></div>
<script language="javascript" type="text/javascript" src="/javascript/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready( function()
{
$('#auto').load('screenGen.php');
refresh();
});
function refresh()
{
setTimeout( function()
{
$('#auto').load('screenGen.php');
refresh();
}, 5000);
}
</script>
答案 4 :(得分:-1)
使用Ajax。就这样做:
在您的网页try:
from setuptools import setup
except ImportError:
from distutils.core import setup
setup(name='poirot',
version='0.0.15',
description="Search a git repository's revision history for text patterns.",
url='https://github.com/dcgov/poirot',
license='https://raw.githubusercontent.com/DCgov/poirot/master/LICENSE.md',
packages=['poirot'],
install_requires=['tqdm==3.4.0', 'Jinja2==2.8'],
test_suite='nose.collector',
tests_require=['nose-progressive'],
classifiers=[
'Environment :: Console',
'Intended Audience :: Developers',
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5'
],
include_package_data=True,
scripts=['bin/big-grey-cells', 'bin/little-grey-cells'],
zip_safe=False)
中使用JQuery
<head>
然后在javascript中创建AJAX请求函数并从setInterval:
调用它<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
</head>
<body></body>
</html>
现在将所有文件放在一个文件夹中并运行。请参阅此处的小样本= https://drive.google.com/file/d/0B0fajNFg3-Zka1hmNHZUR0JIa2M/view?usp=sharing