2009-06-10 3 views
1

Ich benutze jQuery in meiner App mit CakePHP und MySQL entwickelt.jQuery Ajax Erfolgsmeldung zeigt eine große HTML-Datei

In diesem jQuery-Code

$.ajax({ 
    type: "POST", 
    url: "./updateField", 
    data: "name="+fieldname, 
    success: function(msg){ 
       alert("Data Saved: " + msg); 
      }//success 
});//ajax 

die Datenbankoperationen richtig gehen, aber wenn ich Benutzung eines Warn Aussage machen es zeigt mir eine große HTML-Datei ... weiß nicht, warum es kommen wird.

Antwort

4

Es zeigt eine HTML, weil das ist, was Sie vom Server bekommen. Ich nehme an, dass dies passiert, weil Ihr AJAX-Aufruf das Rendern der Seite nicht verhindert, anstatt eine XML- oder JSON-Struktur zurückzugeben. Ich weiß nicht, welche Optionen Sie in CakePHP für die Rückgabe von XML oder JSON im Gegensatz zum Rendern der Seite haben, aber die Ursache des Problems liegt eindeutig auf der Serverseite und nicht auf der Clientseite.

1

Da, dass die Antwort von der Post ...

-2

versuchen, mehr Parameter zum Erfolg Funktion hinzugefügt - erste Parameter zurückgeben nicht unbedingt Ergebnis, sondern Absender oder gleich etwas.

+1

Die erster Parameter/ist/das Ergebnis des POST. Das Ergebnis ist zufällig ein langes Dokument vom Server. Wie von Dr.Jokepu angegeben, kann es ratsam sein, dies auf der Serverseite zu korrigieren. –

2

Ich glaube standardmäßig, Cake führt keine Ajax-Anfragen über das Hauptlayout, so dass MOST HTML nicht da sein sollte. Wenn nicht, können Sie erzwingen, welches Layout verwendet werden kann, indem Sie die render-Methode für einen Controller aufrufen und das Layout auf "ajax" setzen. Referenz: http://book.cakephp.org/view/57/Controller-Methods#render-428

Ich hatte auch Probleme mit Debug aktiviert, weil alle SQL-Anweisungen in einer HTML-Tabelle am Ende der AJAX-Anforderungen protokolliert wurden, und einige schwerwiegende Parsing-Probleme verursacht, wenn der Datentyp AJAX erwartet wurde . Dies ist wahrscheinlich ein Hack, aber ich habe Folgendes getan, um es zu umgehen.

Im Haupt AppController in der before() Ich habe die folgenden (stellen Sie sicher, alle anderen rufen Methode, um die Eltern before Methoden des Controllers):

if ($this->RequestHandler->isAjax()) { 
     $db =& ConnectionManager::getDataSource('default'); 
     $db->fullDebug = false; 
} 

In Kuchen/libs/Modell/Datenquellen/dbo_source. php in etwa auf Linie 2074 in meiner Version, änderte ich

if (Configure::read() > 1) { 
    $this->showLog(); 
} 

zu

if (Configure::read() > 1 && $this->fullDebug) { 
    $this->showLog(); 
} 
Verwandte Themen