【问题标题】:Update PHP variable onchange of select field更新选择字段的 PHP 变量 onchange
【发布时间】:2014-02-22 16:07:24
【问题描述】:

我正在处理我找到的其他人的代码的 sn-p。一旦选择字段发生更改,我想更新一个 PHP 变量。

变量的名称是 $ProductType,如下所示。当前代码执行预期的操作,所以现在我要做的就是将变量设置为等于更改的选项

<?php
  $ProductType = '';

  if(isset($_GET['trade'])){
    //Everything in here will get echoed in the DIV
    echo "You selected: ".$_GET['trade'];
    $ProductType = $_GET['trade']; // I'd have thought this might work but when I echo $ProductType, it returns nothing.
    exit;
  }

?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

<form name="x" action="" method="POST">
  <select name="trade" onchange="$('#extra').load('?trade='+this.value);">
    <option value="1">item1</option>
    <option value="2">item2</option>
    <option value="3">item3</option>
    <option value="4">item4</option>
  </select>
  <input type="submit" value="SEARCH" class="submit-button btn" />
</form>

<div id="extra" style="color:red;"></div>

编辑:

这次我添加了一个搜索按钮。我再次回应了它,它似乎正在工作,但是,它返回的数组不是我所追求的。 因此,一旦页面加载,用户将从下拉列表中进行选择,并且变量 $ProductType 应该会更改。如果我随后提交表单,页面会再次加载,并且我的变量会更新我的查询。

【问题讨论】:

  • $_GET['trade'] 是空的吗?你想echo exit之后?
  • onchange事件可以调用ajax
  • 您正在尝试混合使用 php 和 javascript,在您完成 load 调用后 php 脚本无法运行,因此在调用后没有 $ProductType,您需要将其存储在一些会话变量。
  • 我已经测试过你的代码,它是完美的。当我更改选择框时,它会显示您选择的输出:2. 您为选择框编写了onchange 事件,因此当您的选择选项更改为新选项时它会显示结果。
  • 谢谢大家,我已经添加和编辑,希望它能清除我想要实现的目标。

标签: php variables select


【解决方案1】:

PHP 在服务器上运行,jquery (javascript) 在客户端机器的浏览器中运行,这基本上意味着如果您从 chrome 或 IE 中检查您的 php 为您创建的 html,您所看到的只是 HTML,而您 php代码将丢失,因为服务器已经运行它(在“服务器端”)并使用它的输出来更改/附加您包含在 php 中的 html。

你的html表单使用'post'方法,所以当http协议post(发回)到服务器时,你需要使用$_POST["trade"]来访问浏览器在postbackphp post var documentation here上发送的值

通常会在自己的 html 表单中添加一个隐藏变量,php 可以使用该变量作为检查,如果表单已经回发到服务器,或者如果没有收到回发(第一次运行),那么隐藏变量将不会出现在$_POST 变量集合中

【讨论】:

  • 感谢 Nnoel 对井的描述。由于从 GET 更改为 POST,页面现在重新加载并回显正确的变量输出。现在我只需要从你的链接中弄清楚这个会话变量是如何工作的。
  • 会话变量很有用,但是如果您只是将所有内容写入 html 表单变量,您可以通过从 html 回发重新加载所有内容来跟踪 php 变量,否则,会话需要记住哪个页面被传递到哪个页面用户,因此可以加载正确的变量。 @SixfootJames
猜你喜欢
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
相关资源
最近更新 更多