【发布时间】:2011-03-17 17:39:03
【问题描述】:
<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 时与从其他页面发帖时无法正确 POST?
这毫无意义。
附:我知道我对表单的 jQuery 处理有点重。我最初使用 onchange="this.form.submit();"但改变它只是为了看看它是否会表现得一样。它继续出现同样的错误。
在此先感谢 :) 克里夫
【问题讨论】:
-
我看不出您在此处提供的有限代码有什么问题。也许您也可以发布您的 PHP。我猜你的颜色搜索页面上的 PHP 代码正在某个地方刷新 $_POST。
-
我列出的 PHP 位于页面顶部,并且是文件中对 $_POST 的唯一引用。我只是将表单/PHP 更改为使用 GET,它在所有情况下都可以正常工作。好奇怪!
-
提示:最好在表单中放一个id,然后用它来调用submit:
$('frmColors').submit() -
是的,Treffynnon 可能是对的,因为我刚刚用 onchange="this.form.submit();" 进行了测试n 它工作正常,是 bloginfo('url') 函数输出正确的 url 吗?
-
这个页面是如何加载/重新加载的?当表单重新加载时,动作指向哪里?
标签: php javascript wordpress