<form action="<?php bloginfo('url'); ?>/color-search/" method="post" accept-charset="utf-8" name="color-search">
<select name="color-choice" id="color-choice">
<option value="">Choose a Color</option>
<option value="Black">Black</option>
<option value="Blue">Blue</option>
<option value="Brown">Brown</option>
<option value="Gray">Gray</option>
<option value="Green">Green</option>
<option value="Orange">Orange</option>
<option value="Purple">Purple</option>
<option value="Red">Red</option>
<option value="Pink">Pink</option>
<option value="White">White</option>
</select>
</form>
<script type="text/javascript">
$("#color-choice").change(function() {
$(this).closest("form").submit();
});
</script>
此代码在我的侧边栏中呈现。当第一次更改下拉菜单时,浏览器会将表单正确发布到http://myurl/color-search/,并且该页面上的代码会正确呈现结果。
if(!empty($_POST['color-choice'])) {
$pageColor = $_POST['color-choice'];
}
并发症?生成的页面(http:// myurl / color-search)上面有完全相同的表单。当我更改下拉列表时,它会提交,但PHP不会获得任何POST数据。
所以,问题是:为什么这个表单在回发到自己的URL时与在其他页面上发布时无法正确发布?
没有意义。
P.S。我知道我对表单的jQuery处理有点沉重。我最初使用onchange =“this.form.submit();”但改变它只是为了看它是否会表现相同。它继续有同样的错误。
提前致谢:) 克里夫
答案 0 :(得分:0)
您还应该回显$ pageColor以显示它。 (也许你已经这样做但我在代码中看不到它)
答案 1 :(得分:0)
感谢Lawrence Cherone触发导致此解决方案的想法。
由于我没有编写此代码,因此我做出了错误的假设,即下拉表单只包含在一个地方。实际上,它存在于两个单独的侧边栏模板文件中,其中一个用于实际目标页面并且在URL中包含拼写错误。 (复数而不是单数)
修好后,它开始工作了。
显然,WordPress忽略了拼写错误并重定向到了正确的目标网页,但$_POST
数据在此过程中丢失了。
抱歉是误报。 :)