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