使用javascript定期调用php脚本

时间:2015-12-29 15:20:52

标签: javascript php

我正在使用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?

5 个答案:

答案 0 :(得分:1)

您需要的解决方案之一就是使用请求,因为它们会让您的服务器重新生成screenGen的输出。

在您的javascript源代码中,您可以:

通过对screenGen.php文件执行GET请求,替换require变量声明中的screenGen。您将在screenGen变量中存储对请求的响应,然后按照您的方式编写它。

总结:

  • 在screenGen.php上执行GET请求
  • 检索get请求的结果(执行echo "<img src=" . $filename . " style='width:100%;'>"
  • 使用document.write更新实际页面

代码示例:

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。就这样做:

  1. 在您的网页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>
  2. 然后在javascript中创建AJAX请求函数并从setInterval:

    调用它
    <html>
        <head>
            <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
        </head>
        <body></body>
    </html>
    
  3. 现在将所有文件放在一个文件夹中并运行。请参阅此处的小样本= https://drive.google.com/file/d/0B0fajNFg3-Zka1hmNHZUR0JIa2M/view?usp=sharing