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";
}
?>
왜냐하면 당신의'while' 루프에 결함이 있습니다. 왜 당신은 보통'for' 루프를 사용하지 않는 겁니까? – adeneo
'