hotti: (Ajax) Ferflixte Null

Beitrag lesen

hi,

Script siehe Link, Code s.u.
Kleines Problem: Die Umrechnung von
einer IP  zu Numerisch
0.0.0.0      0
tut.

Für den Fall, dass bei 'ip' oder 'num' selbst eine '0' eingegeben wird, sollte eigentlich die Kontrollstruktur im Perl-Script greifen, was die jedoch nicht macht, weil's gar nicht erst dahinkommt. Da blicke ich noch nicht, was seitens DOM passiert, bitte mal um sachdienliche Hinweise.

Danke und Gruß,
Hotte

Zum Testen

(Wer das Script selbst im Apache testen möchte, es läuft auch ohne Basic.pm, einfach die entsprechenden Zeilen auskommentieren)

  
#!/usr/bin/perl  
###########################################################################  
my $title = "IP-Adresse in Numerischen Wert umrechnen";  
###########################################################################  
use strict;  
use Basic;  
use CGI 'param';  
  
if(param()){  
	print "Content-type: text/plain\n\n";  
	if(my $ip = param('ip')){  
		if(!$ip){  
			print "0.0.0.0:0";  
			exit;  
		}  
		my $num = ipA2N($ip);  
		print "$ip:$num";  
		exit;  
	}  
	if(my $num = param('num')){  
		if(!$num){  
			print "0.0.0.0:0";  
			exit;  
		}  
		my $ip = ipN2A($num);  
		print "$ip:$num";  
		exit;  
	}  
}  
else{  
	print "Content-type: text/html\n\n";  
	print htmlUp($title); # Basic.pm  
	form();  
	print htmlDown();     # Basic.pm  
}  
  
exit;  
###########################################################################  
sub form{  
	print qq(  
		<form action="$ENV{SCRIPT_NAME}">  
		  
		<fieldset style="float:left; padding:10px">  
			<legend><b>IP-Adresse</b></legend>  
				<input size=30 name="ip" id="ip" title="IP-Adresse" value="255.255.255.255">  
				<input type='button' value='&gt;&gt;' title='IP zu Numerisch' onClick="loadIP('$ENV{SCRIPT_NAME}?ip='+document.getElementById('ip').value);">  
		</fieldset>  
  
		<fieldset style="float:left; padding:10px">  
			<legend><b>IP Numerisch</b></legend>  
				<input type='button' value='&lt;&lt;' title='Numerisch zu IP-Adresse' onClick="loadIP('$ENV{SCRIPT_NAME}?num='+document.getElementById('num').value);">  
				<input size=30 name="num" id="num" title="IP Numerisch" value="4294967295">  
		</fieldset>  
  
		</form>  
		<p style="clear:left"></p>  
		  
		<script type="text/javascript">  
			var reqIP;  
			function loadIP(url){  
				if (window.XMLHttpRequest) {  
						reqIP = new XMLHttpRequest();  
						reqIP.onreadystatechange = responseHandler;  
						reqIP.open("GET", url, true);  
						reqIP.send(null);  
				}  
				else if (window.ActiveXObject) {  
					reqIP = new ActiveXObject("Microsoft.XMLHTTP");  
					if (reqIP) {  
						reqIP.onreadystatechange = responseHandler;  
						reqIP.open("GET", url, true);  
						reqIP.send();  
					}  
				}  
			}  
  
			function responseHandler(){  
				if (reqIP.readyState == 4) {  
					if (reqIP.status == 200) {  
						var meta = reqIP.responseText.split(":");  
						document.getElementById('ip').value = meta[0];  
						document.getElementById('num').value = meta[1];  
					}  
					else{  
						document.getElementById('ip').value = "Problem mit Ajax";  
						document.getElementById('num').value = "Problem mit Ajax";  
					}  
				}  
			}  
		</script>  
		  
		<p><b>Hinweis:</b> Eine Überprüfung der Eingaben findet nicht statt!</p>  
	);  
  
	return;  
}  
###########################################################################  
# Oktetten(Dezimal)schreibweise zu Numerisch  
sub ipA2N{  
    my $ipA=shift;  
    return unpack("N", pack("C4", split(/\./, $ipA)));  
}  
###################################################################################################  
# Numerisch zu Oktetten(Dezimal)schreibweise  
sub ipN2A {  
    my $ipN = shift;  
    return join(".", unpack("C4", pack("N", $ipN)));  
}  
###################################################################################################  

--
Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.