2013-01-05 6 views
2

나는 AJAX를 매우 신중하게 사용하고 있습니다. PHP 파일에서 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> 

getData.php가 포함 next.php에서

<?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>"; 
?> 

내가 얻기 위해 노력하고 내가 당신에게 내가 뭘하려고 오전의 예를 들어 보겠습니다 "sub"선택 상자를 사용하여 제출 된 값. 나는 고양이 선택 상자 을 선택하여 완벽하게 하위 선택 상자를 얻고있다

<?php 
echo $_POST['cat']; 
echo $_POST['sub']; 
?> 

그러나 나는 양식을 제출 한 후 $ _POST [ '하위']에서 아무것도하지 않습니다 나는 있습니다. 나는 $ _POST [cat]을 얻는다. 도움말이나 튜토리얼 링크를 제공해 주시면 감사하겠습니다. 당신의 getData.php에서

+1

을 넣어? – vodich

답변

0

1), 당신은 $html 변수를 만들 수 있지만 그것은 브라우저에 echo에 표시되지 않습니다.

... 
... 
$html.="</select>"; 
echo $html; // <-- echo it! 

2) 귀하의 아약스는 잘못된 것입니다. XHR의 send() 메서드를 호출 한 직후 응답 텍스트를 즉시 가져올 수 없습니다. 당신은 onreadystatechange 이벤트에서 수신해야합니다

xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     document.getElementById("sub_cat").innerHTML=xmlhttp.responseText; 
    } 
    } 

3) 당신은 HTML 따옴표 속성 포장해야 당신이 닫는 </form> 태그를 누락과 같은

onchange="load_sub_cat(this.value)" 

4) 보인다.sub_cat div 뒤에 양식 을 닫아야합니다. 양식 입력이 포함될 것이기 때문입니다.

+0

빠른 응답을 보내 주셔서 감사합니다! 예. 제대로 양식을 닫았습니다. 앞에서 말한 것처럼 $ _POST [ 'cat']을 반향시킬 수 있지만 $ _POST [ 'sub_cat']에서 아무 것도 얻지 못합니다 – muttalebm

+0

양식을 제출 한 후 다음 결과가 나타납니다 : 1 // $ _POST의 echo [ 'cat'] PHP 오류가 발생했습니다. 심각도 : 알림 메시지 : 정의되지 않은 색인 : sub – muttalebm

+0

은 (는) 지금 '하위'드롭 다운입니까? Firebug에서 요청이 실제로 게시되는지 확인할 수 있습니다. – MrCode

0

확인 당신은 양식 HTML 태그를 닫은 : 후 ... 당신이 당신의 폼 태그가 제대로 닫히지 않았다

+0

예. $ _POST [ 'cat']을 출력 할 수 있습니다. – muttalebm