将值从客户端传递到服务器并异步传递回客户端

时间:2012-11-06 08:08:24

标签: php javascript ajax

我一直试图解决这个问题很长一段时间。我知道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调用中获得了成功,但返回值未定义。

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);
    ?>

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

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

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

因此PHP具有bult-in 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);
    });