Problem mit AJAX

ts230

Gesperrt
Hallo,ich habe ein problem mit meinem AJAX-Votesystem.
AJAX geht ja nicht wirklich.
Firebug sagt das das Es keine Post-Variablen gibt,sondern zeigt nur das gesamte Query an.
In anderen Foren habe ich gelesen,dass man die Parameter mit "&" trennen muss.
Das mache ich auch aber es geht irgendwie nicht.

Und das PHP-Script liefert nichts zurück!
Anzusehen gibts das hier.
Mein Query sieht so aus:
Code:
name=Test&vote=yes&comment=fdhjghdhdhlfgjf%0Adghfdlgkdhg%F6dfghd%0A%F6ksghgfdgjfdlgdjflds%0Ajgkdgjhldgjhdlkgjhdlfkgh%0Askgejlsairkopeh%20klgfd%F6soldj%0Agrseilkfrejshfklejrgreajkn%F6d%0Ag%F6ldrehg%F6ldhglk%F6fjh
Mein AJAX ist das:
Javascript:
function postForm() {

          Effect.Puff('votep', {delay: 1, duration: 1});

          Effect.Puff('txt', {delay: 1, duration: 1});
          Effect.Puff('name', {delay: 1.2, duration: 1});
          Effect.Puff('sbar_txt', {delay: 2, duration: 1});
          Effect.Puff('span1', {delay: 1.4, duration: 1});
          Effect.Puff('span2', {delay: 1.6, duration: 1});
          Effect.Puff('vote_b', {delay: 1.8, duration: 1});
  var xmlHttp;
  try
    {    // Firefox, Opera 8.0+, Safari
     xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {    // Internet Explorer    
      try
      {
       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");      
      } catch (e)
        {      
         try
         {
          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
         } catch (e)
           {       
error();
             $('msg').innerHTML="<img src='images/Error.png'><br>Error while creating data object.Please <a href='mailto:seiferttristan@googlemail.com'>mail</a> the webmaster.";
new Effect.Pulsate($('msg'), {delay: .1, duration: 3});
           
}
        }
    }

    
    try 
    {
      xmlHttp.onreadystatechange=function()
      {

     if(xmlHttp.readyState==2)
        {
$('msg').innerHTML="<img src='images/ajax-loader.gif'><br>Loading.Please wait until all Data is Sended.";
//txtScroll();

}
      if(xmlHttp.readyState==4)
        {
$('msg').innerHTML="<img src='images/i.png'><br>Thank you for voting!";
new Effect.Pulsate($('msg'), {delay: .1, duration: 3})
//manualPB2.setPercentage(xmlHTTP.responseText);
//manualPB1.setPercentage(xmlHTTP.responseText);
window.status="";
window.status=xmlHttp.responseText;

        }
      }
       xmlHttp.open("POST","vote.php",true);
      // xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
       postStr = "name="+ escape($('name').value)+"&vote="+ vote+"&comment="+ escape($('txt').value);
       window.status="Sending:"+postStr;
       ac = confirm("Your request is ready to send.\n Do you want to continue?\nRequest:"+postStr);
if(ac == true){
       xmlHttp.setRequestHeader("Content-Type","application-x-www-form-urlencoded");
       xmlHttp.send(postStr);
}
else
{
window.status="Sending aborted.";
alert("Abort trough user.\nError 311");
}


    } catch(e)
      {
error();
 $('msg').innerHTML="<img src='images/error.png'><br>Error while sending data.Please <a href='mailto:seiferttristan@googlemail.com'>mail</a> the webmaster.<br>Errorcode:"+xmlHttp.ResponseText+"<br>Desc.:"+xmlHttp.status;

new Effect.Pulsate($('msg'), {delay: .1, duration: 5})
      } 
new Effect.Appear($('element6'), {delay: 1, duration: 3});
new Effect.Appear($('element7'), {delay: 1, duration: 3});
					// second manual example : multicolor (and take all other default paramters)
manualPB2 = new JS_BRAMUS.jsProgressBar(
								$('element6'),
								95,
								{

									barImage	: Array(
										'images/bramus/percentImage_back4.png',
										'images/bramus/percentImage_back3.png',
										'images/bramus/percentImage_back2.png',
										'images/bramus/percentImage_back1.png'
									),

								}
							);
		//		}, false);

manualPB1 = new JS_BRAMUS.jsProgressBar(
								$('element7'),
								5,
								{

									barImage	: Array(
										'images/bramus/percentImage_back4.png',
										'images/bramus/percentImage_back3.png',
										'images/bramus/percentImage_back2.png',
										'images/bramus/percentImage_back1.png'
									),

																	}
							);
			//	}, false);

}
Bitte helft mir!
 
Zuletzt bearbeitet von einem Moderator:
Hi.

Erstmal ist dein XHTML Code voller Fehler. Es fehlt die Namensraum-Deklaration, Elemente sind nicht korrekt beendet worden, dadurch sind Elemente innerhalb von anderen Elementen definiert (span Tag direkt innerhalb eines form Tags) was nicht erlaubt ist, usw. Du solltest erstmal deinen Code aufräumen: http://validator.w3.org/

Deinen Javascript Code hast du direkt in den XHTML Code geschrieben und dabei die Spezialzeichen nicht entwertet. Du solltest den Code in einer CDATA Sektion definieren:
HTML:
<script type="text/javascript">
// <![CDATA[

...

// ]]>
</script>
Das gleiche gilt für CSS Code falls dieser Spezialzeichen (<, >, &) enthält.

Ich bekomme beim Laden ein Problem in der prototype.js Datei angezeigt. Du verwendest außerdem noch Mochikit. Diese beiden Frameworks kommen sich in die Quere. Nimm mal Mochikit raus und schau ob es dann besser ist.

Warum schreibst du denn den Code für den AJAX Request selbst wenn du schon Prototype eingebunden hast?
Javascript:
var myAjax = new Ajax.Request('get_data.php?lorem=ipsum&name=binny',{
	method: 'post',
	onComplete:handlerFunction
});
Gruß
 
Zuletzt bearbeitet:
Jetzt ist der Valid aber es geht immer noch nicht.
@deepthroat
Wo werden bei deinem Prototype-Post die POST-Variablen übergeben?
 
Dein Script kann mit POST-Variablen ja nichts anfangen wenn du das Formular über die Methode GET versendest. Ansonsten bekommst du ja nicht so eine URL:
Code:
name=Test&vote=yes&comment=fdhjghdhdhlfgjf%0Adghfdlgkdhg%F6dfghd%0A%F6ksghgfdgjfdlgdjflds%0Ajgkdgjhldgjhdlkgjhdlfkgh%0Askgejlsairkopeh%20klgfd%F6soldj%0Agrseilkfrejshfklejrgreajkn%F6d%0Ag%F6ldrehg%F6ldhglk%F6fjh
Oder hab ich mich jetzt verlesen?
 
Jetzt ist der Valid aber es geht immer noch nicht.
Was heißt das? Was sind die auftretenden Fehler?
@deepthroat
Wo werden bei deinem Prototype-Post die POST-Variablen übergeben?
Warum schaust du nicht einfach mal in die Dokumentation? http://www.prototypejs.org/learn/introduction-to-ajax

(oder du schaust dir den Code nochmal genau an wo denn da evtl. die Parameter versteckt sein könnten...)

Gruß

Dein Script kann mit POST-Variablen ja nichts anfangen wenn du das Formular über die Methode GET versendest. Ansonsten bekommst du ja nicht so eine URL:

Oder hab ich mich jetzt verlesen?
Du hast dich verlesen, denn das ist keine URL wie du unschwer erkennen kannst. Wie die Daten aussehen, die gesendet werden ist auch nicht so interessant, viel wichtiger ist welche Methode angegeben wurde:
ts230 hat gesagt.:
Javascript:
xmlHttp.open("POST","vote.php",true);
Gruß
 
Zurück