我试过研究,但我甚至不确定如何研究这个问题,因为大多数答案都与纯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'];是空的。其他一切都工作正常(类是我所期望的,数据是我所期望的),但似乎名称="子cat"没有传递到$_POST。print_r($_POST)没有列出子cat。想法吗?
我是个白痴。上面的代码运行得很好。我的问题是,我的<form>
的开始是在<div>
,我关闭了大部分形式之前。我想因为所有其他元素都加载在同一页面上,它们在$_POST中过来,但是因为"子猫"是新的,并且在<div>
关闭后,它没有在$_POST中被拾取。这个形式在这个特定元素之后关闭了很长时间,所以肯定是因为它不是原创的。谢谢你的帮助@jcaron!!