在选择字段的更改时更新PHP变量

时间:2014-01-30 11:23:08

标签: php variables select

我正在处理我发现的其他人的代码片段。我想在选择字段发生变化后更新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应该更改。如果我然后提交表单,页面会再次加载,我的变量会更新我的查询。

1 个答案:

答案 0 :(得分:1)

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

您的html表单使用'post'方法,因此当http协议发布(发回)到服务器时,您需要使用$_POST["trade"]来访问postback上浏览器发送的值,php post var documentation here

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