Archivlink: javarea.de Forum > JavaScript > Ajax --> Request oder onreadystatechange wird nicht ausgeführt
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > Ajax --> Request oder onreadystatechange wird nicht ausgeführt

Pages: [1]

geschrieben von Klaush am 03.11.2006 - 09:50
Entweder der Request oder onreadystatechange wird nicht ausgeführt.

Die Eingabe erfolgt von einem Eingabefeld:
<input type="text" size="35" style="width:20%"; autocomplete="off" onkeyup="javascript:AjaxResponse('GET','getUserName',this.value)">

Bis hin zum switch wird alles ausgeführt, das Objekt ist angelegt, doch dann passiert nichts mehr.

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
<script language="Javascript" type="text/javascript">
<!--

// globale Instanz von XMLHttpRequest
var xmlHttp = false;

function AjaxRequest() 
{
	try {
    xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e) {
    try {
        xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    catch(e) {
        xmlHttp  = false;
    }
	}
	
	// falls nicht vorhanden, Objekt fuer Mozilla, Opera oder Safari anlegen
	if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') 
			xmlHttp = new XMLHttpRequest();

	return xmlHttp;
}


function AjaxResponse(request_type, response_string, argument_string) 
{
	// XMLHttpRequest Objekt
	xmlHttp = AjaxRequest()
	
	if (xmlHttp) 
	{
		switch(request_type)
		{
			case "GET":
					xmlHttp.open('GET', './test.php?action=' + response_string + '&rq=' + argument_string, true);
					xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
					xmlHttp.onreadystatechange = response_string;
					xmlHttp.send(null);
			break;
			
			case "POST":
					xmlHttp.open('POST', './test.php?action=' + response_string + '&rq=' + argument_string, true);
					xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
					xmlHttp.onreadystatechange = response_string;
					xmlHttp.send(null);
			break;	
		}
	}	
}

function getUserName() 
{
	alert("TEST");
	
}
//-->
</script>



Ich habe leider keine Ahnung warum das nicht funktioniert.

Hat jemand eine Idee?

geschrieben von René am 03.11.2006 - 10:48
Das wäre für die POST-Methode.

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
	"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>Beispiel</title>

<script type="text/javascript">
<!--
function machRequest()
{
	try
	{
		return new ActiveXObject('Msxml2.XMLHTTP');
	}
	catch(e) {}

	try
	{
		return new ActiveXObject('Microsoft.XMLHTTP');
	}
	catch(e) {}

	try
	{
		return new XMLHttpRequest();
	}
	catch(e) {}

	alert('XMLHttpRequest wird von Deinem Browser nicht unterstützt.');

	return false;
}

function senden()
{
	var request = machRequest();
	var url     = 'ajaxDatenEmpfangen.php';

	request.onreadystatechange = function() { empfangen(request); }
	request.open('POST', url, true);
	request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

	var str = 'text1=' + document.form1.text1.value
	        + '&text2=' + document.form1.text2.value;

	request.send(str);
}

function empfangen(request)
{
	if (request.readyState != 4)
		return;

	var daten = request.responseText;

	document.getElementById('zeig').innerHTML = daten;
}
//-->
</script>

</head>
<body>

<form name="form1" action="#">
	<input name="text1" value="blah">
	<input name="text2" value="blubb">
	<input type="button" value="click" onclick="senden()">
</form>

<div id="zeig">&nbsp;</div>

</body>
</html>

geschrieben von weisnix am 03.11.2006 - 10:55
Ich hätte da folgenden Vorschlag:

das xmlHttp.onreadystatechange = response_string;

gegen das xmlHttp.onreadystatechange = function(){response_string(xmlHttp);}; tauschen.


geschrieben von Klaush am 03.11.2006 - 13:30
Danke für eure Antworten..... mein Beispiel hätte dann wohl auch funktioiert, der Fehler scheint in der Funktion zu stecken die ich versuche zu übergeben und aufzurufen.

HTML-Quelltext
1: 
function(){response_string(xmlHttp);};


schreibe ich hingegen so, dann funktioniert es:
HTML-Quelltext
1: 
function(){getUserName(xmlHttp);};


Mein Vorhaben die Funktion dynamisch zu halten kann ich dann wohl vergessen, da der Übergabename "response_string" der Funktionsname sein soll. Das Anlegen der Funktion mit var response_string = new Funktion(); bringt natürlich auch nichts, da die Funktion dann response_string heißen würde und das bringt dann wiederrum nichts.

Mal sehen wie ich jetzt weiter mache .......

Danke für eure Antworten.

geschrieben von René am 03.11.2006 - 15:11
Hallo Klaus,

wenn du ein POST senden willst muss der Query_String in xmlHttp.send(....); eingefügt werden. Bei GET an die URL in xmlHttp.open(...);

geschrieben von Klaush am 04.11.2006 - 23:19
Zitat
 Original geschrieben von René am 03.11.2006 - 15:11

Hallo Klaus,

wenn du ein POST senden willst muss der Query_String in xmlHttp.send(....); eingefügt werden. Bei GET an die URL in xmlHttp.open(...);


Das weiß ich, ist duch das Copy & Paste passiert. Die Idee mit dem "switch" kam erst wenige Minuten bevor ich das Script hier postete rein und hatte dann schnell copy und paste gemacht und nicht daran gedacht den send request zu ändern....... trotzdem danke.

Übrigens habe ich keine geeigente Möglichkeit der dynamischen Funktionszuweisung gefunden, bin nun auf die herkömmliche Art umgestiegen. ......



Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.