JavaScript表单提交不一致

时间:2011-03-17 17:39:04

标签: php javascript wordpress

    <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();”但改变它只是为了看它是否会表现相同。它继续有同样的错误。

提前致谢:) 克里夫

2 个答案:

答案 0 :(得分:0)

您还应该回显$ pageColor以显示它。 (也许你已经这样做但我在代码中看不到它)

答案 1 :(得分:0)

感谢Lawrence Cherone触发导致此解决方案的想法。

由于我没有编写此代码,因此我做出了错误的假设,即下拉表单只包含在一个地方。实际上,它存在于两个单独的侧边栏模板文件中,其中一个用于实际目标页面并且在URL中包含拼写错误。 (复数而不是单数)

修好后,它开始工作了。

显然,WordPress忽略了拼写错误并重定向到了正确的目标网页,但$_POST数据在此过程中丢失了。

抱歉是误报。 :)