0

我有一个选择框,一旦用户更改选择以按类别过滤我的结果,就会发出 $_POST 命令。

结果正确显示,但是它们是一个小错误,困扰着我...当我更改字段并提交帖子时,URL 没有附加变量,但是当我再次更改选择时,前一个变量被附加到我的网址。

下面是我的代码...

查询代码

    <?php 
    $post_cat = $_POST['position'];
    $node_id = 0;
    $args = array(
        'post_type' => 'jobs',
        'category_name' => $post_cat 
    );

    $the_query = new WP_Query( $args );

    $output = get_output($post_cat);

?>

代码

<form name="job_select" action="?post_cat=<?php echo $post_cat ?>"  method="post">
                <select class="job_cats" onchange="job_select.submit();" name="position">
                        <option style="display:none">Browse Job Categories...</option>
                         <?php 
                              $job = get_categories('16');
                                $option = '<option value="jobs">';
                                $option .= "All Careers";
                                $option .= '</option>';
                                echo $option;

                              // For every child of blog
                              $categories =  get_categories('child_of=16'); 
                              foreach ($categories as $category) {
                                $option = '<option value="'.$category->category_nicename.'">';
                                $option .= $category->cat_name;
                                $option .= '</option>';
                                echo $option;
                              }
                         ?> 
                </select>
            </form>

如果有人对为什么 URL 附加被一轮提交延迟有任何疑问,那么我将不胜感激,感谢您的宝贵时间。

亚历克斯

4

3 回答 3

1

逻辑上有一个小问题:你对一个页面做一个post请求,这个页面有当前的category作为查询参数:

<form name="job_select" action="?post_cat=<?php echo $post_cat ?>"  method="post">

在您的 php 中,您获得了已发布变量的正确值,但您发布并显示的 url 是前一个。

使用它可能会更容易,GET但如果你真的想使用POST,你必须在处理完POST变量后重定向到正确的 url。

于 2013-07-09T01:45:09.047 回答
1

是的,这部分是不正确的:action="?post_cat=<?php echo $post_cat ?>" 因为第一次加载页面时,这变成了action="?post_cat=",并且每次您的操作都被定义为先前的选择。
您可能希望action="<?php echo $_SERVER['PHP_SELF']; ?>"作为您的操作,再次调用同一页面。然后在提交表单后,您就有了 PHP 数组中选择的值$_POST。在 URL 中传递的变量可以在$_GET数组中找到。这就像你在做这两个。method="POST"你不需要将它们传递到 URL 中。

于 2013-07-09T01:45:25.560 回答
-1

尝试在查询中通过 '$_REQUEST' 而不是 '$_POST' 获取 post 变量。POST 方法不会显示 url 中的值,它会是 GET 方法,所以显示的 url 不能提交到 '$_POST' 变量中

于 2013-07-09T01:49:41.963 回答