使用jQuery和PHP显示数据

时间:2012-01-22 11:11:36

标签: php jquery

背景

我对PHP或jQuery了解不多,我想知道我正在尝试做什么是可能的。我有一台服务器可以访问防火墙后面的数据库。我想使用jQuery每隔5秒将数据推送到外部服务器的PHP脚本,并在那里公开显示。此外部服务器无法访问我所知道的数据库。如果可以的话,我需要在PHP脚本中添加什么?

我到目前为止

internalServer.js:

function timedPost() {
    $.ajax({
        type: 'POST',
        url: 'http://externalserver/display.php',
        crossDomain: true,
        data: '{"some":"json"}',
        dataType: 'json'
    });
    setTimeout("timedPost()", 5000);
}

externalServer.php

<?php 
    switch ($_SERVER['HTTP_ORIGIN']) {
        case 'http://internalServer': case 'https://internalServer':
        header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
        header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
        header('Access-Control-Max-Age: 1000');
        header('Access-Control-Allow-Headers: Content-Type');
        break;
    }
?>

1 个答案:

答案 0 :(得分:0)

我没有做过跨域的东西,但是对jQuery网站的快速检查让它看起来应该是可能的。

看看你的作品是否已经起作用,首先 - 你还没说。推测externalServer.php也可以进行你需要的数据记录吗?使用Chrome / Safari中的Firefox / Firebug或dev工具观察正在进行的AJAX操作,看看它是否带有HTTP响应代码200(一切正常)。

如果这不起作用,请对您自己的服务器执行AJAX操作,然后在处理此问题的PHP代码中,使用curl或类似方法将数据发布到外部服务器上的其他脚本。这是“代理”HTTP请求,虽然它需要另一个请求/响应跳,但我可能会这样做。

编辑:aaahhhh,我明白为什么你上面有你的header()语句。您希望脚本在外部服务器上执行AJAX日志显示。这是不可能的 - 有一个脚本用于执行AJAX日志记录,另一个脚本用于显示。正如我在评论中建议的那样,登录到本地文件(或sqlite数据库,这只是一个文件)并使用不同的脚本显示该数据。