【问题标题】:Inconsistent JavaScript form submission不一致的 JavaScript 表单提交
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 是的,页面的其余部分使用这个。
【解决方案2】:

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

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

修复此问题后,它开始工作。

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

抱歉误报。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2014-08-07
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多