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