php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.08.2009, 21:06  
Erfahrener Benutzer
 
Registriert seit: 11.12.2004
Beiträge: 238
PHP-Kenntnisse:
Anfänger
Buschdieb
Standard [Erledigt] AJAX interpretRequest läuft nur mit alert()

hi leute,

ich sitze seit einigen stunden an folgendem script. Es läuft alles wunderbar. Es handelt sich um ein Ajax request mit response. die antwort vom php script soll in einem div ausgegeben werden (responsediv). die antwort wird nur verabreitet wenn bei
Zitat:
// Request auswerten
function interpretRequest(responsedivid)
{
//alert("test");
var divtest = responsedivid;
//alert(divtest);
switch (request.readyState)
{
eines der alerts startet. klammer ich sie aus. läuft gar nix. hat jemand eine idee?

vielen Dank schon mal.

Code:
// JavaScript Document
// GLOBAL AJAX SCRIPT Request response

// Ladegrafik
function stateloading(state,statusid) {
if (state == "visible") {document.getElementById(statusid).innerHTML = "<img src=\'images/ajax-loader.gif\'>";}
else { document.getElementById(statusid).innerHTML = ""; } }

// Request senden
function setRequest(rurl,responsediv,feld1,value1,feld2,value2,feld3,value3,feld4,value4,feld5,value5,feld6,value6,feld7,value7,feld8,value8,feld9,value9) 
    {
    var responsedivid = responsediv;
    //alert(responsedivid);

    stateloading('visible',responsedivid);
    // Request erzeugen
    if (window.XMLHttpRequest) {
    request = new XMLHttpRequest(); // Mozilla, Safari, Opera
    } else if (window.ActiveXObject) {
    try {
    request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
    } catch (e) {
    try {
    request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
    } catch (e) {}
    }
    }

    // überprüfen, ob Request erzeugt wurde
    if (!request) {
    alert("Kann keine XMLHTTP-Instanz erzeugen");
    return false;
    } else 
    {
    //var url = "album_sichtbarkeit_aendern.php";
    var url = rurl;
    //var responsedivid = responsediv;
    // Request öffnen
    request.open('post', url, true);
    // Requestheader senden
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    // Request senden
    request.send(feld1+'='+value1+'&'+feld2+'='+value2+'&'+feld3+'='+value3+'&'+feld4+'='+value4+'&'+feld5+'='+value5+'&'+feld6+'='+value6+'&'+feld7+'='+value7+'&'+feld8+'='+value8+'&'+feld9+'='+value9);
    // Request auswerten
    request.onreadystatechange = interpretRequest(responsedivid);
    }
    }

// Request auswerten
function interpretRequest(responsedivid)
    {
    //alert("test");
    var divtest = responsedivid;
    //alert(divtest);
	switch (request.readyState) 
        {
		// wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
		case 4:
        if (request.status != 200) 
            {
            alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
            } 
            else 
            {
            var content = request.responseText;
            // den Inhalt des Requests in das <div> schreiben
            stateloading('invisible',divtest);
            document.getElementById(divtest).innerHTML = content;
            }
            break;
            default:
            break;
        }
	}
__________________
fragen ist kostenlos!

Buschdieb.com
Buschdieb ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.08.2009, 02:40  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Habs erst mal nur ein wenig modifiziert, weils recht konfus war.
Ebenso, wie der Parameter-Wahnsinn der Funktion setRequest(!!!)
Auf Formularfelder kannst auch direkt zugreifen, die brauchst nicht übergeben.

Probier das hier mal aus und melde Dich obs vielleicht schon geht oder was statt dessen passiert.
HTML-Code:
// Ladegrafik
function stateloading(state,statusid) {
  if (state) document.getElementById(statusid).innerHTML = "<img src=\'images/ajax-loader.gif\'>";
  else document.getElementById(statusid).innerHTML = "";
}


// Request senden
function setRequest(rurl,responsedivid,feld1,value1,feld2,value2,feld3,value3,feld4,value4,feld5,value5,feld6,value6,feld7,value7,feld8,value8,feld9,value9) {
  var params = feld1+'='+value1+'&'+feld2+'='+value2+'&'+feld3+'='+value3+'&'+feld4+'='+value4+'&'+feld5+'='+value5+'&';
  params += feld6+'='+value6+'&'+feld7+'='+value7+'&'+feld8+'='+value8+'&'+feld9+'='+value9;

  stateloading(true,responsedivid);

  // Request erzeugen
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest(); // Mozilla, Safari, Opera
  } else if (window.ActiveXObject) {
    try {
      request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
    } catch (e) {
      try {
        request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
      } catch (e) {}
    }
  }

  // überprüfen, ob Request erzeugt wurde
  if (!request) {
    alert("Kann keine XMLHTTP-Instanz erzeugen");
    return false;
  } else {
    // Request öffnen
    request.open('post', rurl, true);

    // Requestheader senden
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

    // Request senden
    request.send(params);

    // Request auswerten
    request.onreadystatechange = interpretRequest(responsedivid);
  }
}


// Request auswerten
function interpretRequest(responsedivid) {
  switch (request.readyState) {
  // wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
    case 4:
      if (request.status != 200) {
        alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
      } else {
        // den Inhalt des Requests in das <div> schreiben
        stateloading(false,responsedivid);
        document.getElementById(responsedivid).innerHTML = request.responseText;
      }
      break;
    default: break;
  }
}
Arne Drews ist offline   Mit Zitat antworten
Alt 23.08.2009, 10:14  
Erfahrener Benutzer
 
Registriert seit: 11.12.2004
Beiträge: 238
PHP-Kenntnisse:
Anfänger
Buschdieb
Standard

hi arne drews, vielen dank für deine hilfe!

leider funktioniert es immer noch nicht.

mit dem alert(responsedivid) läufts. dann erhält er die antwort. aber dann hab ich den doofen alert. das ist ja nicht sinn und zweck der angelegenheit.

so läufts...

Code:
// Request auswerten
function interpretRequest(responsedivid) {
alert(responsedivid);
  switch (request.readyState) {
  // wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
    case 4:
      if (request.status != 200) {
        alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
      } else {
        // den Inhalt des Requests in das <div> schreiben
        stateloading(false,responsedivid);
        document.getElementById(responsedivid).innerHTML = request.responseText;
      }
      break;
    default: break;
  }
}
eine idee?

außerdem brauche ich nicht immer alle "params". die funktion ist eine die ich auf meheren seiten verwenden möchte. hast du oder jemand anders eine idee, wie ich das noch weiter verschlanken kann. danke!
__________________
fragen ist kostenlos!

Buschdieb.com
Buschdieb ist offline   Mit Zitat antworten
Alt 24.08.2009, 18:19  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Probier's mal so
HTML-Code:
// Request auswerten
function interpretRequest(responsedivid) {
  if(request.readyState==4 && request.status!=200) alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
  else if(request.readyState==4 && request.status==200) {
    stateloading(false,responsedivid);
    document.getElementById(responsedivid).innerHTML = request.responseText;
  }
}
Arne Drews ist offline   Mit Zitat antworten
Alt 24.08.2009, 21:33  
Erfahrener Benutzer
 
Registriert seit: 11.12.2004
Beiträge: 238
PHP-Kenntnisse:
Anfänger
Buschdieb
Standard

Zitat:
Zitat von Arne Drews Beitrag anzeigen
Probier's mal so
HTML-Code:
// Request auswerten
function interpretRequest(responsedivid) {
  if(request.readyState==4 && request.status!=200) alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
  else if(request.readyState==4 && request.status==200) {
    stateloading(false,responsedivid);
    document.getElementById(responsedivid).innerHTML = request.responseText;
  }
}
leider funktioniert auch das nicht.

liegt es vielleicht irgendwie an der übergabe?

Code:
    // Request auswerten
    request.onreadystatechange = interpretRequest(responsedivid);
aber wenn ich das alert reinsetze dann gibt er mir ja die variable responsedivid richtig aus. komisch....
__________________
fragen ist kostenlos!

Buschdieb.com
Buschdieb ist offline   Mit Zitat antworten
Alt 24.08.2009, 22:13  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Hmmm... Das könntest' nochmal probieren.
Einfach den Parameter weglassen:
HTML-Code:
request.onreadystatechange = interpretRequest();
und dann in der Funktion das Element direkt ansprechen:
HTML-Code:
document.getElementById('die_entsprechende_id').innerHTML = request.responseText;
Keine Ahnung, ob das klappt, aber viel was anderes fällt mir im Moment auch nicht ein.
Könnte Dir höchstens mal mein eigenes Request-Script schicken.
Das funktioniert einwandfrei.

Mußt es halt dann nur auf Deine Felder anpassen...
Arne Drews ist offline   Mit Zitat antworten
Alt 24.08.2009, 22:19  
Erfahrener Benutzer
 
Registriert seit: 11.12.2004
Beiträge: 238
PHP-Kenntnisse:
Anfänger
Buschdieb
Standard

Zitat:
Zitat von Arne Drews Beitrag anzeigen
Hmmm... Das könntest' nochmal probieren.
Einfach den Parameter weglassen:
HTML-Code:
request.onreadystatechange = interpretRequest();
und dann in der Funktion das Element direkt ansprechen:
HTML-Code:
document.getElementById('die_entsprechende_id').innerHTML = request.responseText;
Keine Ahnung, ob das klappt, aber viel was anderes fällt mir im Moment auch nicht ein.
Könnte Dir höchstens mal mein eigenes Request-Script schicken.
Das funktioniert einwandfrei.

Mußt es halt dann nur auf Deine Felder anpassen...
wenn ich es weglasse funktioniert es wunderbar!! da gibt es keine probleme. ich will dem script aber sagen in welches div er die antwort zu schreiben hat weil sich das bei mir pro tabellen spalte und zeile ändert. es ist ein globales script, deswegen auch die variable.

das wäre ganz toll wenn du mir dein script mal zuschickst. entweder hier im forum oder über PN.

Danke!
__________________
fragen ist kostenlos!

Buschdieb.com
Buschdieb ist offline   Mit Zitat antworten
Alt 25.08.2009, 07:51  
Erfahrener Benutzer
 
Registriert seit: 11.12.2004
Beiträge: 238
PHP-Kenntnisse:
Anfänger
Buschdieb
Standard

Hi Leute,

ich war mal ein bis googln und habe folgendes gefunden.

onreadystatechange - Google-Suche

Hier ein Forumartikel zu diesem Thema: Anfängerfrage: http_request.onreadystatechange - AJAX (Asynchronous JavaScripting and XML) Forum

Sobald ich es ausprobiert habe, werde ich euch davon berichten.
__________________
fragen ist kostenlos!

Buschdieb.com
Buschdieb ist offline   Mit Zitat antworten
Alt 25.08.2009, 09:44  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Wenn das der Grund sein sollte, dürfte es mit dem gehen, was ich Dir gestern per PN geschickt habe.
Arne Drews ist offline   Mit Zitat antworten
Alt 25.08.2009, 19:32  
Erfahrener Benutzer
 
Registriert seit: 11.12.2004
Beiträge: 238
PHP-Kenntnisse:
Anfänger
Buschdieb
Standard

Hi,

habe jetzt ein funktionierendes Script.

Die fett markierten Bereiche hab ich geändert.

Vielen Dank für die Hilfe Arne Drews.

Code:
// Ladegrafik
function stateloading(state,statusid) {
  if (state) document.getElementById(statusid).innerHTML = "<img border=\'0\' src=\'images/ajax-loader.gif\'>";
  else document.getElementById(statusid).innerHTML = "";
}


// Request senden
function setRequest(rurl,responsedivid,feld1,value1,feld2,value2,feld3,value3,feld4,value4,feld5,value5,feld6,value6,feld7,value7,feld8,value8,feld9,value9) {
  var params = feld1+'='+value1+'&'+feld2+'='+value2+'&'+feld3+'='+value3+'&'+feld4+'='+value4+'&'+feld5+'='+value5+'&';
  params += feld6+'='+value6+'&'+feld7+'='+value7+'&'+feld8+'='+value8+'&'+feld9+'='+value9;
  
  responsedivid = responsedivid;
  stateloading(true,responsedivid);

  // Request erzeugen
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest(); // Mozilla, Safari, Opera
  } else if (window.ActiveXObject) {
    try {
      request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
    } catch (e) {
      try {
        request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
      } catch (e) {}
    }
  }

  // überprüfen, ob Request erzeugt wurde
  if (!request) {
    alert("Kann keine XMLHTTP-Instanz erzeugen");
    return false;
  } else {
    // Request öffnen
    request.open('post', rurl, true);

    // Requestheader senden
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

    // Request senden
    request.send(params);

    // Request auswerten
    //request.onreadystatechange = interpretRequest();
    request.onreadystatechange = function() { if(interpretRequest) document.getElementById(responsedivid).innerHTML = request.responseText; } 

  }
}


// Request auswerten
function interpretRequest() {
  if(request.readyState==4 && request.status!=200) alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
  else if(request.readyState==4 && request.status==200) {
    //stateloading(false,responsedivid);
    //document.getElementById(responsedivid).innerHTML = request.responseText;
  }
}
__________________
fragen ist kostenlos!

Buschdieb.com
Buschdieb ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fileupload via AJAX GSJLink HTML, Usability und Barrierefreiheit 13 17.05.2012 21:41
Ajax und include reloaden choice JavaScript, Ajax und mehr 6 10.07.2009 13:47
[Erledigt] Was passiert wenn ein Alert Fenster geöffnet wird martl666 JavaScript, Ajax und mehr 4 30.03.2009 17:29
Rezeptdatenbank: Zutatenliste mit Ajax realisieren? espressoboy JavaScript, Ajax und mehr 6 25.01.2009 20:23
1111: AJAX meets PHP (indirectly) Nikolaus 2.0 Adventskalender 2008 5 15.12.2008 11:00
Probleme mit Sonderzeichen bei Ajax (prototype)... go1denboy JavaScript, Ajax und mehr 1 31.08.2008 18:44
AJAX Response: Firebug gibt Alert aus Curanai HTML, Usability und Barrierefreiheit 1 20.01.2008 20:38
AJAX: Session-Inhalt an PHP Curanai HTML, Usability und Barrierefreiheit 2 05.11.2007 15:45
AJAX open mit POST und GET DonTermi HTML, Usability und Barrierefreiheit 5 04.10.2007 18:22
Ajax bild.php aktualisieren M3g4Star HTML, Usability und Barrierefreiheit 3 09.03.2007 17:14
AJAX läuft im IE nich richtig Freeaak HTML, Usability und Barrierefreiheit 3 02.03.2007 18:39
alert.... dh1sbg HTML, Usability und Barrierefreiheit 4 28.01.2007 11:59
Ajax und Sonderzeichen? GSJLink HTML, Usability und Barrierefreiheit 1 11.11.2006 14:36
AJAX: Newsflash: How to? SvenLittkowski HTML, Usability und Barrierefreiheit 11 26.09.2006 23:14
Apache läuft aber kein Php Programm läuft Server, Hosting und Workstations 1 08.07.2004 15:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ajax alert, javascript funktioniert nur mit alert, interpretrequest, ajax funktioniert nur mit alert, alert ajax, ajax request alert, ajax responsetext nur mit alert, code funktioniert nur mit alert, interpretrequest(, interpretrequest();, ajax interpretrequest übergabe, javascript funktion funktioniert nur mit alert, xmlhttprequest nur mit alert, interpretrequest switch (request.readystate, interpretrequest(), javascript wird nur bei alert, ajax der request wurde abgeschlossen ist aber nicht ok, javascript interpretrequest, function interpretrequest(), ajax interpretrequest

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum