【问题标题】:$_POST isn't pulling value from the form populated by jQuery.post$_POST 没有从 jQuery.post 填充的表单中提取值
【发布时间】:2017-02-24 10:27:10
【问题描述】:

我尝试过研究,但我什至不确定如何研究这个问题,因为大多数答案都与纯 jQuery、PHP 或 HTML 有关,但似乎没有人遇到同样的问题 - 这可能意味着我遗漏了一些明显的东西......

我有一个带有选择框的表单。在更改选择框时,我将 jQuery.post 调用到带有 php/mysql 查询和 html 的函数页面。我将这些信息拉回我的表单中,它工作得很好。但是,当我发布表单时,变量 $_POST['subcat'] 为空。代码如下:

表格:

    <li><h3><?php echo 'Market:';?></h3>
            <script>
                function display_subcat(vals)
                {
                    jQuery.post("<?php bloginfo('siteurl'); ?>/?get_subcats_for_me=1", {queryString: ""+vals+""}, function(data){
                        if(data.length >0) {

                            jQuery('#sub_cats').html(data);

                        }
                    });

                }                               
            </script>

        <p><select class="do_input_new" name="market" onchange="display_subcat(this.value)" >
        <option value="">Select Market</option>
        More Options...
        </select>
        <br/><span id="sub_cats">
        </span>

        </p></li>

功能:

    if(isset($_GET['get_subcats_for_me']))
    {
        $cat_id = $_POST['queryString'];
        if(empty($cat_id) ) { echo " "; }
        else
        { 

            $args2 = "orderby=name&order=ASC&hide_empty=0&parent=".$cat_id;
            $sub_terms2 = get_terms( 'project_cat', $args2 );   

            if(count($sub_terms2) > 0)
            {

                $ret = '<select class="do_input_new" name="subcat">';
                $ret .= '<option value="">'.__('Select Subcategory','ProjectTheme'). '</option>';

                foreach ( $sub_terms2 as $sub_term2 )
                {
                    $sub_id2 = $sub_term2->term_id; 
                    $ret .= '<option '.($selected == $sub_id2 ? "selected='selected'" : " " ).' value="'.$sub_id2.'">'.$sub_term2->name.'</option>';

                }
                $ret .= "</select>";
                echo $ret;

            }
        }

        die();  
    }

现在,当我提交表单时,变量 $submarket = $_POST['subcat'];是空的。其他一切正常(类是我所期望的,数据是我所期望的),但似乎 name="subcat" 没有通过 $_POST。 print_r($_POST) 没有列出 subcat。想法?

【问题讨论】:

  • 没有$submarket$_POST['subcat']; 吗?
  • 对了,echo 'Market:'&lt;h3&gt;&lt;?php echo 'Market:';?&gt;&lt;/h3&gt; 中做了什么?
  • @adeneo 没错,$_POST['subcat'];回来是空的
  • 您没有显示封闭的&lt;form&gt; 元素,但我们假设它确实使用了POST。您是否检查过浏览器实际发送的内容(使用开发人员工具,并检查发送的请求)? &lt;span id="sub_cats"&gt; 确实在 &lt;form&gt; 内吗?您是否还有另一个具有相同 name 的元素?
  • Ctrl-Shift-I 是你的朋友。或菜单 -> 更多工具 -> 开发者工具。选择网络选项卡,发布您的表单,检查实际发送的内容。 “元素”选项卡还允许您检查您的 select 是否确实在表单中,并且没有其他同名元素。

标签: javascript php jquery html


【解决方案1】:

我是个白痴。上面的代码完美运行。我的问题是我的&lt;form&gt; 的开头是&lt;div&gt;,我在大部分表格之前关闭了它。我想,因为所有其他元素都加载到它们在 $_POST 中出现的同一页面上,但是因为“subcat”是新的,并且在 &lt;div&gt; 关闭之后,它没有在 $_POST 中被拾取。表格在这个特定元素之后很久就关闭了,所以它一定是因为它不是原创的。感谢您的帮助@jcaron!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多