[AJAX] Funktion funktioniert, wird jedoch nicht aufgerufen

Milliongame

Mitglied
Moin,

ich will das ganze problem erstmal theoretisch erklären, der Code
kommt er später , wenn man ihn wirklich braucht ^^

Ich habe folgendes Problem:
In brauche 2 Request via AJAX, beide funktionieren, der eine
wird per onload ausgeführt (funktion a), der andere per onclick bzw. href
(funktion b), jedoch funktioniert nur der mit onload, aber ruft man die
funktion b per adressleiste auf, passiert alles so wie es soll,

liegt dem eventhandler onload, das die funktion b gar nicht erst bzw.
nur bis zum request ausgeführt wird?

mfg
der autor
 
Moin,

Das kann man anhand der Bescheibung nicht sagen, woran es liegt... generell sollte es damit keine Probleme geben.

Also...lasse die Theorie Theorie sein und packe Butter bei die Fische(Code ins Thema) :suspekt:
 
Info: das ganze ist ein rating script

rating.js:
Code:
function CreateRequestObject()
{
	var request = "";

	if(navigator.appName == "Microsoft Internet Explorer")
	{
		request = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		request = new XMLHttpRequest();
	}
 
	return request;
}

 
function requestVote(g, b, a)
{
	var request = CreateRequestObject();
 
	request.open('GET', '../content/rating.php?gid=' + g);
 
	request.onreadystatechange = function()
	{
		if(request.readyState == 4 && request.status == 200)
		{
			var Content = request.responseText;
			document.getElementById('rating').innerHTML = Content;
		}
	};
	request.send(null);
}

// Die Funktion macht die Probleme,
// die darüber (requestVote) macht
// keine Probleme ...

function sendRating(g, b)
{
	var request = CreateRequestObject();
 
	request.open('GET', '../content/rating.php?gid=' + g + '&action=vote&sterne=' + b, false);

	requestVote(g);

	request.onreadystatechange = function()
	{

		if(request.readyState == 4 && request.status == 200)
		{
			document.getElementById('rating').innerHTML = '';

			requestVote(g);
		}

	};
	request.send(null);
	

}
  

function zeige(g, n)
{
  var voting = '';

  for(var i = 1; i <= n; i++)
  {
    voting = voting + '<a href="#" onclick="sendRating(' + g + ', ' + i + ');" onmouseover="show(' + g + ', ' + i +');" ><img src="http://www.tutorials.de/forum/image/ratestar.gif" alt="' + i +' Sterne" /></a>';

  }

  if(i <= 5)
  {
    for(var x = 5; i <= x; i++)
    {
      voting = voting + '<a href="#" onclick="sendRating(' + g + ', ' + i + ');" onmouseover="show(' + g + ', ' + i +');" ><img src="http://www.tutorials.de/forum/image/nratestar.gif" /></a>';
    }
  }

  document.getElementById('ratingStars').innerHTML = voting;
}


function clear()
{
  document.getElementById('ratingStars').innerHTML = ' ';
}


function show(g, n)
{
  clear();
  zeige(g, n);
}

Datei in sich das rating ding befindet
PHP:
[...]

<?php 

echo "<body onload=\"requestVote(".$_GET['id'].")\">";

?>

[...]


mfg
der autor

edit: kleine beschreibt: man hovert die sterne, die leuchten auf, und wenn man klickt
sollte, was es aber nicht amcht, das rating gesendet werden und dann ebenfalls sich
das ganze neuladen, über die adressleiste funkt alles 1a aber im script nicht, der funktions-
name wurde definitiv richtig geschrieben ;)
 
Zuletzt bearbeitet:
Ist das irgendwo online?

Das Hauptprobleme, welches ich sehe, ist Folgendes:

ich mag irgendwie nicht glauben, dass da überhaupt die Verarbeitung der Requests funktioniert, denn du beziehst dich dabei auf eine Variable request, welche beim onreadystatechange innerhalb der dort zugewiesenen Funktion nicht verfügbar ist.
 
Jo, komische Sache, dass es beim onload funktioniert.

Beim Klick funktioniert es bei mir übrigens auch :)

Du solltest da noch etwas einbauen, das verhindert, dass die Sachen aus dem Cache geladen werden,...aber eines ist klar: Beim Klick wird was geladen, kann man in Firebug unter "Netzwerk" deutlich sehen.
 
habe leider kein firebug, was benutzt du, das es bei dir funkt?

meinst du mit dem cachen die komplette seite oder nur das
rating php script?

hast du eine theorie, an der das liegen könnte?

edit: hab mir mal firebug installiert. das rating script was
er solange lädt, ist jedoch nur die anzeige, nicht das raten,
das raten hat 3 parameter, das auslesen der bewertung
jedoch nur einen.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück