Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP获取AJAX生成的Select值_Php_Ajax_Forms - Fatal编程技术网

使用PHP获取AJAX生成的Select值

使用PHP获取AJAX生成的Select值,php,ajax,forms,Php,Ajax,Forms,我对AJAX非常陌生。我试图从PHP文件中获取AJAX生成的选择框的值。让我给你举一个我正在尝试做的例子: firstPage.html包含: <form action="next.php" method="post"> <select name=cat id=cat onchange=load_sub_cat(this.value)> <option value=0 selected=selected >Select Category</option&

我对AJAX非常陌生。我试图从PHP文件中获取AJAX生成的选择框的值。让我给你举一个我正在尝试做的例子:

firstPage.html包含:

<form action="next.php" method="post">
<select name=cat id=cat onchange=load_sub_cat(this.value)>
<option value=0 selected=selected >Select Category</option>
<option id=1 value=1>A  </option>
<option id=2 value=2>B  </option>
<option id=3 value=3>C  </option>
</select>

<div id=sub_cat>---Select--Subcategory---</div>
<script>
function load_sub_cat(str){
                var xmlhttp;
                xmlhttp=new XMLHttpRequest();
                xmlhttp.open("get","getData.php?q="+str,false);
                xmlhttp.send();
                document.getElementById("sub_cat").innerHTML=xmlhttp.responseText;
            }
</script>
<?php
$q=$_GET['q'];
//Some database calls……………………………
$html="<select name=sub>";
$html.="<option value=1>Test 1</option>";//Populating the options from database
$html.="</select>";
?>
getData.php包含:

<form action="next.php" method="post">
<select name=cat id=cat onchange=load_sub_cat(this.value)>
<option value=0 selected=selected >Select Category</option>
<option id=1 value=1>A  </option>
<option id=2 value=2>B  </option>
<option id=3 value=3>C  </option>
</select>

<div id=sub_cat>---Select--Subcategory---</div>
<script>
function load_sub_cat(str){
                var xmlhttp;
                xmlhttp=new XMLHttpRequest();
                xmlhttp.open("get","getData.php?q="+str,false);
                xmlhttp.send();
                document.getElementById("sub_cat").innerHTML=xmlhttp.responseText;
            }
</script>
<?php
$q=$_GET['q'];
//Some database calls……………………………
$html="<select name=sub>";
$html.="<option value=1>Test 1</option>";//Populating the options from database
$html.="</select>";
?>
在next.php中,我尝试使用子选择框获取提交的值。 我有:

通过选择cat选择框,我得到了完美的子选择框 但是在提交表格后,我在$u POST['sub']上没有得到任何东西。我确实收到了$_POST['cat']。 任何帮助或教程链接都将不胜感激。

1在getData.php中,您创建了$html变量,但似乎没有将其回显到浏览器

...
...
$html.="</select>";
echo $html; // <-- echo it!
3您需要将HTML属性用引号括起来:

onchange="load_sub_cat(this.value)"

4看起来您缺少一个结束标记。请确保在sub_cat div之后关闭表单,因为它将包含表单输入。

检查是否已关闭表单html标记: 之后 放

您是否正确关闭了表单标签?感谢您的快速回复!是的,我确实正确地关闭了表单。正如我之前所说,我可以回显$\u POST['cat'],但在提交表单后,我没有从$\u POST['sub\u cat']获得任何信息,我得到以下结果:1//echo from$\u POST['cat']遇到PHP错误严重性:注意消息:未定义索引:sub下拉列表现在显示了吗?您可以在Firebug中查看请求以查看实际发布的内容。是的,下拉列表确实显示并起作用,但问题是它没有将值与其他表单元素一起发布。我的意思是我可以得到其他值,比如cat下拉列表和其他输入元素。但不是sub-dropdown的值验证下拉列表是否在表单标记内而不是外部。另外,在Firebug/Chrome开发工具中查看请求,查看实际发布的内容。我可以呼应$u POST['cat']