2014-04-07 1 views
0

이것은 양식과 javascript/ajax 기능을 가진 내 HTML입니다. 모든 텍스트 필드 값은 test.php로 전달됩니다. 그렇게 할 때 처음 세 텍스트 필드를 입력하면 test.php가 양식 값을 성공적으로 표시합니다. 그러나 다른 한편으로는, 네 개의 텍스트 필드를 모두 채우고 보내면 아무 일도 일어나지 않을 것입니다. 프로그래밍에 익숙하지 않아서이 문제를 파악할 수 없었습니다. 나는이 문제의 해결책에 대해 감사 할 것이다.Javascript/ajax는 모든 양식 텍스트 필드 값을 PHP에 전달하지만 마지막 텍스트 필드 값은 전달하지 않습니다.

#form.html 

    <html> 
    <SCRIPT language="javaScript"> 

    function sendData(){ 
       if (window.XMLHttpRequest){ 
        xmlhttp = new XMLHttpRequest(); 
        } 
       else 
        { 
        xmlhttp = new ActiveXobject ('Mircosoft.XMLHTTP'); 
        } 

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

       var i=0; 
       var arr = new Array(); 

       while ((document.getElementById(i).value)) { 
       if ((document.getElementById(i).value)!=""){     
        var activity = document.getElementById(i).value;    
        arr[i] = activity; 
       }   
       i++; 
       } 

       var params = 'activity='+JSON.stringify(arr); 
       xmlhttp.open('POST','test.php', true); 
       xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); 

       xmlhttp.send(params); 
       document.getElementById("message").innerHTML = "Sending...";   
       } 

       </script> 

    <form action="#" method="POST"> 
    <tr>Name1:<td> <input type="text" id="0"/> </td></tr><br> 
    <tr>Name2:<td> <input type="text" id="1"/> </td></tr><br> 
    <tr>Name3:<td> <input type="text" id="2"/> </td></tr><br> 
    <tr>Name4:<td> <input type="text" id="3"/> </td></tr><br> 
    <input type="button" value="Send" onclick="sendData()";/> 
    </form> 

    <div id="message">    
    </div> 

    </html> 

여기는 양식 값이 표시되는 test.php 파일입니다. 모든 것이 오류가 밖으로 그런 다음, i === 4까지 getElementById 반환 null를 잘 작동하고, null.value 오류, 그래서

while ((document.getElementById(i).value)) { 

#test.php 
    <?php 
    $activity = $_POST['activity']; 
    $activity = json_decode($activity); 

    if (is_array($activity)){ 
     foreach ($activity as $value){ 
      echo $value."<br>"; 
      } 
     } 
    else { 
     echo "error"; 
    } 
    ?> 
+1

왜냐하면 당신의'while' 루프에 결함이 있습니다. 왜 당신은 보통'for' 루프를 사용하지 않는 겁니까? – adeneo

+0

'