0

很长一段时间以来,我一直试图解决这个问题。我知道 JavaScript 是客户端脚本,PHP 是服务器端脚本,但是是否可以将浏览器纪元时间传递给 PHP 脚本以运行一些计算,然后根据结果返回 geoJSON 数据;全部异步?

我想传递给 PHP 脚本的函数类似于:

function retreiveUTC() {
  var now = new Date().getTime();
  var browserUTC = Math.floor(now)/1000.0;  // this returns epoch time of the browser
}

然后我想获取从函数生成的纪元时间并将其传递给 php 脚本以确定要返回的 JSON 文件。

例如,我将有以下文件驻留在服务器上:

1352188536.JSON
1352187536.JSON
1352177536.JSON

我想检索最接近浏览器时代结果的那个。先感谢您。

更新代码如下:

不知道我做错了什么,但我从 ajax 调用中获得了成功,但返回值未定义。

阿贾克斯的东西:

    $.post ('timezone.php',
    {
        epochTime: browserUTC
    }, 
    function (result) {
       //do someting to result
    }, "json");

    var browserUTC = new Date().getTime();

    $.post ('timezone.php',
    {
        epochTime: browserUTC
    }, 
    function (result,status) {
   //display file name returned by PHP
        alert(result.file + "\n" + status);
   //console.log('test');
    });

PHP:

    <?php
    $epochTime = round($_POST['epochTime'] / 1000);
    $res= array();
    $res['file'] = $epochTime . '.JSON';
    return json_encode($res);
    ?>
4

2 回答 2

0

我相信它是通过标准的 AJAX 调用完成的。例如,如果您使用 jQuery:

 $.post ('pathToPHPScript.php', {epochTime: browserUTC}, function (result) {
       //do someting to result
    }, "json");

在 PHP 脚本中,您可以像标准 POST 变量一样检索纪元时间的值:

$epochTime = $_POST['epochTime'];
//do required calculations

所以 PHP 有内置的json_encode函数,可以帮助从数组中生成 JSON 编码的字符串。如果你传递一个数组,你可以在 jQuery 中检索:

//PHP
$res= array();
$res['file'] = $epochTime . '.JSON';
return json_encode($res);

在上面引用的 jQuery 回调函数中:

 $.post ('pathToPHPScript.php', {epochTime: browserUTC}, function (result) {
       //display file name returned by PHP
       console.log(result.file);
    });
于 2012-11-06T08:25:44.837 回答
0

我猜您是在询问异步请求。您可以向您的 php 脚本发送 AJAX 请求并获取相应的 JSON 数据并进行处理。你必须改变设计。

首先,当请求页面时,发送普通数据(JSON 除外),一旦在客户端加载了 javascript 文件,您就可以调用该函数,在函数结束时,只需使用 AJAX 请求发送浏览器时间回到另一个 php 脚本,该脚本将获取相应的 JSON 文件并提供给客户端。

使用 jquery 库以更简单的方式执行 AJAX 请求。

于 2012-11-06T08:17:24.943 回答