Изпращане на данни от radio бутони с AJAX

alex95_bg_2

Registered
От вчера се боря с един код, неуспешно :)
имам няколко групи от радио бутони
генерирани изглеждат така:
Код:
1. отг А<input value="2" id="idto" type="hidden"><br><input name="2" 
id="2" value="a" type="radio">А<br><input name="2" id="2" value="b" 
type="radio">Б<br><input name="2" id="2" value="c" 
type="radio">В<br>2. отг Б<input value="2" id="idto" 
type="hidden"><br><input name="3" id="3" value="a" 
type="radio">А<br><input name="3" id="3" value="b" 
type="radio">Б<br><input name="3" id="3" value="c" 
type="radio">В<br>3. отг В<input value="2" id="idto" 
type="hidden"><br><input name="4" id="4" value="a" 
type="radio">А<br><input name="4" id="4" value="b" 
type="radio">Б<br><input name="4" id="4" value="c" type="radio">В
като ид-то им е идто на въпроса в БД
проблема е че като изпратя това с този ajax:
http://www.captain.at/howto-ajax-form-post-request.php
резултата на сървъра е:
Код:
Array ( [id] => 2 [2] => a [3] => a [4] => a [submit] => Готов съм! )
дори като съм избрал РАЗЛИЧНИ от а навсякъде :(

напъло съм се оплел и не знам какви глупости съм правил :D

така съм направил скрипта:
Код:
<script type="text/javascript" language="javascript">
   var http_request = false;
   function makePOSTRequest(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      
      http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById('myspan').innerHTML = result;            
         } else {
            alert('There was a problem with the request.');
         }
      }
   }
   
   function get(obj) {
      var poststr = "id=" + encodeURI( document.getElementById("idto").value ) +
	  <?php while($row = mysql_fetch_array($res)) { ?>
                    "&<?=$row[id]?>=" + encodeURI( document.getElementById("<?=$row[id]?>").value )+ <?php } ?>
					"&submit=" + encodeURI( document.getElementById("submit").value );
      makePOSTRequest('<?=$base?>test_process.php', poststr);
   }
</script>

идеята е като на групата с радио бутони например с ид=2 избера втория чекбокс на сървъра един от елементите в $_POST да е [2] => b
 
Код:
<?
if (count($_POST)) {
print_r($_POST);
die;
}
?>
<script type="text/javascript" language="javascript">
   var http_request = false;
   function makePOSTRequest(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
     
      http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            alert(http_request.responseText);           
         } else {
            alert('There was a problem with the request.');
         }
      }
   }
   
   function get(obj) {
      var poststr = "v2=" + obj.v2.value + "&2=" + getRadio(obj.o2)
			     + "&v3=" + obj.v3.value + "&3=" + getRadio(obj.o3)
			     + "&v4=" + obj.v4.value + "&4=" + getRadio(obj.o4);
      
      makePOSTRequest('.', poststr);
   }
   
	function getRadio(el) {
		var val = null;
		for (var i=0; i < el.length; i++) {
			if (el[i].checked) { val = el[i].value; break; }
		}
		return val;
	}

</script>
<form name="f1" action="">
	1. отг А<input value="2" name="v2" type="hidden"><br>
	<input name="o2" value="a" type="radio"> А <br>
	<input name="o2" value="b" type="radio"> Б <br>
	<input name="o2" value="c" type="radio"> В <br>
	2. отг Б<input  value="2" name="v3" type="hidden"><br>
	<input name="o3" value="a" type="radio"> А <br>
	<input name="o3" value="b" type="radio"> Б <br>
	<input name="o3" value="c" type="radio"> В <br>
	3. отг В<input value="2" name="v4" type="hidden"><br>
	<input name="o4" value="a" type="radio"> А <br>
	<input name="o4" value="b" type="radio"> Б <br>
	<input name="o4" value="c" type="radio"> В <br>
	<input type="button" name="submit" value="submit" onclick="get(this.form);">
</form>

достъпвам през имената, не чрез getElementById - лесно се преобразува ..
 

Back
Горе