【问题标题】:how to get value from javascript to php如何从javascript获取价值到php
【发布时间】:2013-06-21 17:30:42
【问题描述】:

我正在使用以下代码来获取屏幕分辨率。

这适用于 WAMP 服务器,但是当我将它放在远程 Linux 服务器上时,$height 返回 0

HTML/PHP

<head>
    ....

    <script language="javascript">
        var y=window.screen.availHeight;
        var x=window.screen.availWidth;
        window.location.href = "index.php?height=" + y + "&width=" + x;
        break;

</head>
<?php
    $height=$_GET['height'];
    $height=intval($height);
    echo($height);
?>

【问题讨论】:

  • 这不是一直刷新页面吗?
  • 这似乎是一个非常糟糕的设计决定。为什么在 PHP 代码中需要宽度/高度?
  • 顺便说一句。你不应该那样使用break。它用于switch..case 语句和for-/whileiterations
  • 您的请求 URL 是什么样的,在 Firebug 或 Chrome 开发工具中查找。
  • 有一个break。好的,但它在 WAMP 中工作。

标签: php javascript ajax


【解决方案1】:

你可能想解释你想用这个网页做什么,给出一个将高度传递给 php 的整体解释,因为这个页面根本不起作用。 这是该网页发生的执行流程。

  1. 用户在地址栏中输入index.php。
  2. PHP 服务器处理请求。
  3. $_GET 数组将不包含高度参数。
  4. $height 将不包含任何值。
  5. 当 $height 为空时调用 intval($height) 将返回 0。
  6. 页面将加载,将显示 0。
  7. JavaScript 被执行。
  8. 将使用高度和宽度参数构造 URL。
  9. 浏览器会报错:Uncaught SyntaxError: Illegal break statement
  10. 执行结束。

【讨论】:

  • 感谢您的解释。兄弟,那为什么它与 WAMP 一起工作?大多数时候,在 WAMP 中运行会提供输出,但远程服务器很糟糕。
  • 在你放弃之前,非常仔细地检查你在 WAMP 和远程服务器中的代码,并排比较它们并确保没有差异。然后非常仔细地比较你在 WAMP 和远程服务器地址栏中输入的 url,确保没有差异。
  • 耶,终于有一个合理的解释了! :D
【解决方案2】:

PHP 是服务器端。它从您的浏览器接收请求并呈现 HTML/CSS/Javascript 输出,然后将其发送回您的浏览器。因此,任何有关您的浏览器大小或屏幕大小的信息都需要作为某种请求发送到服务器,无论是在您第一次打开页面时,还是在您加载页面之后。在加载页面后向服务器发送请求称为 AJAX,这很可能是您必须这样做的方式。

http://w3schools.com/ajax/default.asp

【讨论】:

  • 那么为什么不改变窗口位置(尽管它可能是骇人听闻的)使其将数据(来自 JavaScript)发送到(PHP)服务器?另请注意:“这适用于 WAMP 服务器,但是当我将它放在远程 Linux 服务器上时,$height 返回 0”
  • 为了传递值,@Abin 将这些查询字符串参数附加到 URL。
  • @user2246674 差异可能与我们在 window.onload 之外获取宽度和高度的事实有关......所以服务器中的差异可能导致高度和宽度不会立即报告...很奇怪,因为 JS 是客户端。可能是左场的一个想法。
  • @Esaevian - 绝对不是服务器问题。很可能在尚未发布的代码中存在一些差异。 @\SamuelReid - 一个更好的链接是:developer.mozilla.org/en-US/docs/AJAX/Getting_Started - 它不包括花哨的演示,但如果 OP 不熟悉 AJAX 请求,这是一个更好的起点。
【解决方案3】:

您可以通过 AJAX 执行此操作,但您需要将数据发送到不同的 PHP 文件并在那里进行处理(应该没问题,因为 PHP 是在服务器上而不是在您的计算机上处​​理的。

AJAX 是这样工作的:

  • 在 javascript/jQuery 中,将一些值放入变量中
  • 创建一个AJAX代码块(我建议首先使用$.ajax()结构)
  • 在 AJAX 代码块中,将 var-value 对发送到 PHP 文件
  • PHP 文件接收变量值,并对其进行处理
  • PHP 可以返回一些数据(通常是 HTML 字符串,如表格等)
  • 在 AJAX 代码块的 SUCCESS 函数中接收来自 PHP 的数据
  • 在 SUCCESS 函数中,您可以将接收到的代码注入到 DOM 中

这里有几个例子(实际上比乍看之下听起来/看起来要容易得多):

Sending value of dropdown to PHP page

Another basic AJAX example

【讨论】:

  • 我将留下 完全相同的评论,就像我在另一个答案上所做的那样:那么为什么不更改窗口位置(尽管它可能是 hackish)导致它将数据(来自JavaScript)发送到(PHP)服务器?另请注意:“这适用于 WAMP 服务器,但是当我将它放在远程 Linux 服务器上时,$height 返回 0”
  • 再次..为什么不改变窗口位置(尽管它可能是骇人听闻的)导致它将数据(来自 JavaScript)发送到(PHP)服务器?
  • @user2246674 我在尝试将?a=this&amp;b=that 添加到链接上时运气不佳(window.location.href 正在模拟:链接点击)。使用window.location.replace 或许可以逃脱惩罚,但我不确定这是否能解决任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 2017-07-07
  • 1970-01-01
  • 2021-06-15
  • 2020-07-26
相关资源
最近更新 更多