• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Problem mit jQuery.getJSON und Formular

Messmar

New member
Hallo zusammen,

ich versuche anhand eines kleinen, ganz einfachen Skript, einen AjaxRequest via getJson zu schicken:

HTML:
     <script>
            $(document).ready(function(){
                  $('#form_removeData').submit(function(){
                        var gid = $('.gidRem').val();
                        var m   = $('.m_ToRemove').val();
                        var url = "memberSearch/membersearch.jsp?user.Email=" + m + "&group.PK=" + gid;
                        
                        $.getJSON(url, function(data) {
                            console.log('Howww');
                            if (data.isMember === 'false') {
                                return false;
                            }
                        });
                
                });
            });
     </script>

Aber ich bekomme keine Response zurück, so dass meine if-Abfrage gar nicht ausgeführt wird.
Die Parameter sind da und der QueryString auch, aber es kommt ein kein Response.

FireBug von FireFox zeigt nen Fehler in dem jQuery Library: http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js (line:5).
Aber ich kann leider mit dem Fehler nichts anfagnen, da es keine Beschriebung oder sowas gibt... es steht einfach: (line5)

Das gleiche Skript verwende ich an anderer Stelle und es funkt. einwandfrei.

Hierbei der HTML-Code:

HTML:
        <form action="welcome.jsp" method="post" name="form_removeData" id="form_removeData">
            <input type="hidden" name="gid" value="10" class="gidRem">
            <input type="hidden" name="action" value="xxxxx">
            
            <fieldset style="clear:both; float:left; width:672px; height:130px;">
                <label style="margin:20px 0 0 0;">Neue E-Mail-Adresse*</label>
                <input type="text" name="email" value="" class="m_ToRemove">
                <input type="submit" name="removeData" value="Löschen" class="btnRemoveSubmit">
            </fieldset>
        </form>

Irgendeine Idee oder Tipp?

Für jede hilfe wäre ich sehr dankbar!

Gruß
Messmar
 
Zuletzt bearbeitet von einem Moderator:
AW: getJason gibt keine Reposnse zurück

Grundsätzlich macht es keinen Sinn, aus einem Callback heraus ein "return" aufzurufen. Der Rückgabewert würde einfach im "Nirwana" verschwinden. Das "return false" im Callback von $.getJSON ist demnach also nutzlos.

Hast Du mal Deine Fehlerkonsole geprüft? Was sagen die Development Tools Deiner Wahl (Chrome, Firebug etc.) über den Request? Gibt es eine Antwort, und wenn ja, wie sieht diese aus?
 
AW: getJason gibt keine Reposnse zurück

wenn du kein preventDefault im submithandler aufrufst, wird das formular abgesendet, und dein json-request vermutlich beantwortet, wenn die neue seite schon geladen wurde. auf der neuen seite gibt es dann aber keinen mehr, der das auswertet.

FireBug von FireFox zeigt nen Fehler in dem jQuery Library: http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js (line:5).
Aber ich kann leider mit dem Fehler nichts anfagnen, da es keine Beschriebung oder sowas gibt... es steht einfach: (line5)
was FireBug sagt ist egal, was sagt denn die fehlerkonsole?
wozu hast du eigentlich noch FireBug installiert, die funktionalität brint der ff doch schon mit

Irgendeine Idee oder Tipp?
web-konsole -> netzwerkanalyse
 
AW: getJason gibt keine Reposnse zurück

Grundsätzlich macht es keinen Sinn, aus einem Callback heraus ein "return" aufzurufen. Der Rückgabewert würde einfach im "Nirwana" verschwinden.
Das ist so nicht korrekt.

Es mag sein, dass das getJSON den Rückgabewert nicht weiterverarbeitet, aber viele Callbacks brauchen einen Rückgabewert um zu funktionieren. Z.B. bei ARRAY.map() oder ARRAY.reduce() oder ...

PS: Chrome ist auch kein Development Tool, sondern ein ganz normaler Browser... ;)

@hesst: soweit ich weiß, brechen die meisten Browser ausstehende AJAX-Requests ab - es kommt also auf die Verbindungsgeschwindigkeit und den Server an, ob der überhaupt antwortet. Auch ist die Netzwerkanalyse wenig hilfreich, da die bei jedem neuen Laden geleert wird. Ich verwende für sowas immer HttpFox - ist extrem einfach zu bedienen und man sieht sehr schön, was an Verkehr hin und her geht
 
AW: getJason gibt keine Reposnse zurück

aber viele Callbacks brauchen einen Rückgabewert um zu funktionieren. Z.B. bei ARRAY.map() oder ARRAY.reduce() oder ...
Absolut richtig ... ich hätte hier "asynchrone Callbacks" verwenden sollen. Die Callbacks von Array.prototype.map und Array.prototype.reduce werden synchron aufgerufen (der normale Programmfluss kommt zum Stehen, die Callbacks werden hintereinander aufgerufen), der Callback von $.getJSON wird hingegen asynchron aufgerufen. An dieser Stelle macht "return" keinen Sinn mehr.
 
AW: getJason gibt keine Reposnse zurück

soweit ich weiß, brechen die meisten Browser ausstehende AJAX-Requests ab - es kommt also auf die Verbindungsgeschwindigkeit und den Server an, ob der überhaupt antwortet.
läuft auf das selbe hinaus.
der ff hat früher mal sogar das cb noch auf der neuen seite aufgerufen, ka ob das noch so ist.

Auch ist die Netzwerkanalyse wenig hilfreich, da die bei jedem neuen Laden geleert wird.
dann sieht man ja dass eine seite geladen wurde. und fehler in einem request sieht man auch, hab nie was vermisst beim firebug/browsereigenem Netzwerkanalyse tool

An dieser Stelle macht "return" keinen Sinn mehr.
der code scheint gekürzt
Code:
function callback()
{
  if (fehler)
  {
    return; 
  }
  ...
}
 
AW: getJason gibt keine Reposnse zurück

Absolut richtig ... ich hätte hier "asynchrone Callbacks" verwenden sollen. Die Callbacks von Array.prototype.map und Array.prototype.reduce werden synchron aufgerufen (der normale Programmfluss kommt zum Stehen, die Callbacks werden hintereinander aufgerufen), der Callback von $.getJSON wird hingegen asynchron aufgerufen. An dieser Stelle macht "return" keinen Sinn mehr.
Auch das würde ich so nicht unterschreiben. Man kann auch asynchrone Callbacks haben, deren Rückgabewert weiterverarbeitet wird. Kenne jetzt kein konkretes Beispiel, aber man könnte sich z.B. vorstellen, dass ein AJAX-Request gemacht wird, dessen Rückgabestring irgendwo auf der Seite angezeigt wird. Jetzt hat die API noch einen optionalen Callback, mit dem man die Antwort des Requests verändern kann. Also der Callback bekommt als Parameter die Originalantwort und der Rückgabewert des Callbacks wird dann angezeigt.

läuft auf das selbe hinaus.
Im Endeffekt - ja.
der ff hat früher mal sogar das cb noch auf der neuen seite aufgerufen, ka ob das noch so ist.
Das haben sie geändert. Der Request wird abgebrochen.


dann sieht man ja dass eine seite geladen wurde. und fehler in einem request sieht man auch, hab nie was vermisst beim firebug/browsereigenem Netzwerkanalyse tool
Stimmt. Aber bei HttpFox sieht man direkt dass der AJAX-Request abgebrochen wurde und viele neue dazugekommen sind - ist hald persistent. Aber das ist sicherlich Gewöhnungssache...
 
AW: getJason gibt keine Reposnse zurück

Guten Morgen allereseits,

vielen Dank für euere Antworten, ausführliche Erklärung und Tipps!

Ich muss hier noch mal posten, da mein Posting/Feedback vor zwei Tagen einfach verschwunden war...

Es lag auch tatsächlich daran, dass der Event Handler: "submit" dazu geführt hat, dass das Form abgeschickt wurde und ich war dann auf die
nächste/ziel Seite.. da war nichts mit repsonse da. Ich habe einfach den Button:

HTML:
<input type="submit" name="removeData" value="Löschen" class="btnRemoveSubmit">

für das Formular entfernt bzw. dessen Type geändert und zwar einfach als
HTML:
<label></label>
und dem den Event handler: "click" - nach zutriffender Bedingung - zugewiesen:

HTML:
<label class="btnRemoveSubmit">Löschen</label>

d.h. am Ende dann folgendes:

HTML:
    ....
$('.btnRemoveSubmit').click(function(){
    if (data.isMember === 'false') {
           $('.mailError').html(errMem);
           return false;
    }else{
          $('#form_removeData').submit();
    }
    .....
});


Danke und Gruß
Messmar
 
Zuletzt bearbeitet:
Zurück
Oben