Ajax Anwendung funktioniert auf localhost, jedoch auf Webserver nicht.

andrutz

Mitglied
hallo alle zusammen,

ich hab vor ein paar Tagen angefangen Ajax zu lernen und habe folgendes Problem:

ich hab fröhlich auf meinem Localhost herumprogrammiert, funktioniert auch alles wunderbar.

nur jetzt hab ich das Ganze auf einen Webserver geladen, und keine einzelne Ajax Anwendung funktioniert, Mozilla Fehlerkonsole spuckt auch nix aus.

nehme Prototype mit dem Ajax.Updater her, onFailure wird ausgeführt, aber dadurch wird der Fehler ja auch nicht genauer definiert.

Wenn das keine banalität sein sollte, poste ich den Code.

Vielen dank für jede Hilfe
 
Zuletzt bearbeitet:
Moin,

Wenn es online ist, poste statt Code einen Link dorthin, ein Live-Beispiel sagt mehr als 1000 Zeilen Code :)

Ansonsten poste den Code :-)
 
Teile von zusammengestelltem index.php
HTML:
  <script src="./js/prototype-1.6.0.3.js" language="JavaScript"></script>
  <script src="./js/scriptaculous-js-1.8.2/src/effects.js" language="JavaScript"></script>
  <script src="./js/scriptaculous-js-1.8.2/src/controls.js" language="JavaScript"></script>
  <script src="./js/ajax.js" language="JavaScript"></script>

<!-- ... -->

<!-- hier wird über php eine tabelle genieriert. es werden die neuesten news und berichte in jeweils eine spalte geladen, wobei nur bei dem ersten eintrag die ersten 5 sätze angezeigt werden.-->

<table>
 <tr>
  <td width="50%">
   <h4>News</h4>
   <div class="feed" onclick="switchInfoItem('news', '3', 'newsActiveItem', 'newsFeedItem3')">
    <span class="title">
     [Title aus PHP]
    </span>
    <div id="newsFeedItem3" class="feedItem">
     [Text aus PHP]
    </div>
   </div>
   <input id="newsActiveItem" value="newsFeedItem3" type="hidden" />
  </td>
  <td width="50%">
   <h4>Berichte</h4>
   <div class="feed" onclick="switchInfoItem('report', '1', 'reportActiveItem', 'globalFeedItem1')">
    <span class="title">
     [Title aus PHP]
    </span>
    <div id="reportFeedItem1" class="feedItem">
     [Text aus PHP]
    </div>
   </div>
   <div class="feed" onclick="switchInfoItem('report', '2', 'reportActiveItem', 'globalFeedItem2')">
    <span class="title">
     [Title aus PHP]
    </span>
    <div style="overflow: visible; display: none;" id="reportFeedItem2" class="feedItem">
    </div>
   </div>
   <input id="reportActiveItem" value="reportFeedItem1" type="hidden" />
  </td>
 </tr>
</table>

Teile von ajax.js
Code:
function switchInfoItem (action, item, infoItemOld, infoItemNew){
	if($(infoItemOld).value != infoItemNew) {
		//alert($(infoItemOld));
		if($(infoItemOld).value != 'none') {
			Effect.BlindUp($(infoItemOld).value);
        }
        var url = './ajax/general.ajax.php';
        var pars = 'action='+action+'&item='+item;
        var myAjax = new Ajax.Updater (
            infoItemNew,
            url,
            {
                method: 'post',
                parameters: pars,
                onComplete: function() {
                	Effect.BlindDown(infoItemNew);
                }
            }
        );
		$(infoItemOld).value = infoItemNew;
	}
	else {
		Effect.BlindUp(infoItemNew);
        $(infoItemOld).value = 'none';
	}
}

Sinn von general.ajax.php
Code:
//Zieht über die gegeben parameter aus der datenbank die ersten 5 sätze und gibt sie über echo aus

Ansonsten als kleine Erklärung:
Die beiden Spalten News und Berichte benutzen zwar die selbe Funktion aber funktionieren eigenständig, heißt wenn ich auf einen anderen, geschlossenen Bericht klicke, wir der aktuell offene Bericht eingefahren und der neue, über Php vie Ajax geladenene, Bericht fährt an unter der Überschrift des eben neu angeklickten Bericht aus.

Auf Localhost funktioniert das ganze wunderbar.. nur irgendwie auf dem Webserver nicht.

Tut mir leid, ich kann keinen Link schicken, is ein noch nicht veröffentliches Projekt,
ich bitte um Verständniss ;)
 
Zuletzt bearbeitet:
Mmmh, du sagst, der Request ansich funktioniert, und JS-Fehlermeldungen gibts auch keine, aber onFailure funktioniert...das würde die Annahme nahelegen, dass etwas mit der general.ajax.php nicht stimmt.

Was liefern denn bei onFailure transport.status und transport.responseText ?
(du kannst das im Firebug auch unter "Netzwerk" im Reiter "Antwort" nachlesen, womit der Server antwortet)
 
Zuletzt bearbeitet:
vielen Dank für die schnelle Antwort :)

Ich hab jetzt im Ajax updater folgendes hinzugefügt:
Code:
onFailure: alert('status :'+this.status+'; responseText: '+this.responseText+';')

wird auch ausgeführt, es kommt folgende Meldung:

status :; responseText: undefinied;

hmm, kann damit leider nicht viel anfangen, hab bisher einen großen Bogen um Javascript gemacht, aber mit Ajax is es doch ne ganz nette Geschichte :)

zu deinem thema: keine Ahnung von Javascript:

ich habe zwar nicht viel Ahnung von Javascript und ich komm eig auch ganz gut zurecht,
hab mir auch ein Buch zu Ajax gekauft und durchgelesen.

Was ich damit sagen möchte, ich will nicht, dass ihr meine "Wunschliste" abarbeitet, sondern ich habe ein Problem und suche Hilfe
 
Zuletzt bearbeitet:
Machs mal so:
Code:
onFailure: function(transport) {
    alert(transport.status+'\n'+transport.responseText);
  }

andrutz hat gesagt.:
zu deinem thema: keine ahnung von javascript:

ich habe zwar nicht viel ahnung von javascript und ich komm eig auch ganz gut zurecht,
hab mir auch ein buch zu ajax gekauft und durchgelesen.

was ich damit sagen möchte, ich will nicht, dass ihr meine "wunschliste" abarbeitet, sondern ich habe ein problem und suche hilfe

Ich habe auch nicht den Eindruck, dass du etwas abgearbeitet bekommen möchtest...alles ist gut ;)
 
Zuletzt bearbeitet:
Erstmal ein dickes dickes Merci für den Tipp mit Firebug, ich hatte früher mal dieses Plugin und hab vor kurzem vergeblichst nach diesem Plugin gesucht :)

Jetzt habe ich das ganze bei onComple hinzugefügt, wird dort auch Ausgeführt, als Meldung kommt "200", heißt soweit ich weiß erfolgreiche Übertragung, aber es wird keinerlei Text übertragen, obwohl ich inzwischen einen Text ausgeben lasse, unabhänig von den übertragenen Parametern..

Im Firebug wird zu der post Anfrage gezeigt, dass alle post Parameter richtig Übertragen werden - nur die Antwort bleibt die gleiche -> gar nichts :(

Aber was ich wirklich am bedenklichsten finde - ich habe in dem File general.ajax.php über dem Php Code einen String eingefügt

Code:
hallo funktioniere
<?
...
?>

Wenn ich jetzt über die Url des Browsers diese Datei aufrufe - ist sie leer !
heißt es ist garkein Problem mit ajax, sondern irgendein anderes :confused:

Weißt Du Vielleicht trotzdem ein Lösungsansatz?
 
Zuletzt bearbeitet:
Dann zeige mal die general.ajax.php...der Fehler sollte dort zu Finden sein :)

Als erstes ändere aber mal in der ajax.js folgende Zeile:
Code:
var url = './ajax/general.ajax.php';

in dies ab:
Code:
var url = './ajax/general.ajax.php?'+new Date().getTime();

vielleicht behebt das ja schon das Problem :)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück