【问题标题】:Using AJAX call to a PHP page issue使用 AJAX 调用 PHP 页面问题
【发布时间】:2010-07-31 09:40:30
【问题描述】:

我正在处理确定客户端时区偏移量的任务,并将其传递给 PHP 脚本,该脚本包含获取该客户端区域的时区标识符的代码。

现在为了确定时区偏移,我使用了 JavaScript。但是,我需要一些方法将其传递给 PHP。我也使用了 AJAX 调用。

var url = "index.php";
url=url+"?client_timezoneoffset="+offset;
xmlhttp.open("GET",url,true);
xmlhttp.send(true);

我正在调用 index.php 的 onload 这个 JavaScript。但是 $_GET 仍然是空的。 我扭曲了这个实现并调用了另一个页面 set_client_timezone.php 令我惊讶的是,$_GET 包含时区。然后我将它存储在 $_SESSION 中。

当我对应用程序进行全面测试时,令我惊讶的是,时区更改会反映在页面的第二次加载中。

即我第一次导航到 http://www.example.com/index.php 时,它显示了 UTC 时间,但是当我重新加载时,它显示了我所在时区的正确时间 - 亚洲/加尔各答。

你们中的任何人都可以建议我摆脱这个悖论吗?

谁能给我一个实现相同目标的标准方法(我准备回滚我当前的实现)

我是第一次在这个论坛发帖,如果我的帖子违反了这个论坛的任何规则,我深表歉意。

干杯,
阿比吉特。

【问题讨论】:

    标签: php javascript ajax


    【解决方案1】:

    如果您通过 ajax 更改时区,那么在第一次调用时加载 index.php 的 php 服务器端内容已经完成。 然后在 index.php 完成后,客户端/javascript 代码启动 Ajax 请求并将时区设置到会话中,以便下一次重新加载服务器端 php 的东西知道正确的时区。

    要修复它,您可以反过来尝试。在 php 中设置时区并将其传递给您的 javascript 代码。

    【讨论】:

    • 感谢您的快速回复。我正在使用 JavaScript 来确定客户端时区偏移量,这取决于我需要为我的 PHP 脚本设置默认时区...
    • 您如何确定时区?不是也可以通过php吗?除此之外,我能想到的唯一解决方案是通过 ajax 加载所有内容(或所有与时区相关的内容)。因此,您可以确定您已经知道用于显示相应数据集的时区。
    • 见...在example.com/index.php 的页面加载上,我调用上面的JavaScript,它会以秒为单位返回偏移量。我使用 GET 将它传递给 set_client_timezone.php 页面。在此页面中,我将其设置为 $_SESSION。
    • 现在在 PHP 中有一个名为 timezone_abbreviations_list() 的 API 函数,它返回包含 (offset_from_GMT_in_sec, timezone_identifier, day_light_saving_time) 条目的数组中的所有时区标识符。我使用上面的偏移量从这个数组中检索时区。
    • 还有其他标准的出路吗?
    【解决方案2】:

    我同意上述建议。 您可以在加载主要内容(index.php)后调用 js 函数来解决此问题。

    setTimeout("yourfunction()",1000);// load function after 1 seconds from the actual loading time
    

    这可能会对你有所帮助。

    【讨论】:

      【解决方案3】:

      我刚刚重新编写了 PHP 和 JavaScript 的加载基础知识,并重新修改了我的代码以使其正常工作。感谢大家的及时反馈。

      任何正在寻找解决此问题的优秀解决方案的人,我会引导您访问博客 - http://www.incoherent.ch/blog/2008/02/20/php5-time-zone-solution/

      干杯,
      阿比吉特

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多