Klaus: Warum erhalte ich eine Error-Meldung?

Hallo,

Ich habe versucht, eine funktionierende JS-Konstellation aus Script1 in Script2 zu übertragen. In Script1 erhalte ich eine wunderschöne Erfolgsmeldung, aber Script2 liefert mir eine Error-Meldung.

Hintergrund: Ich möchte per Anklicken einer Checkbox einen Datenbankeintrag ausführen sowie eine Rückmeldung des Scriptes anzeigen.

Hier der JS-Teil:

  
function remove_div() {  
if (document.getElementById('successii')) {  
   var myNode = document.getElementById('successii');  
   myNode.parentNode.removeChild(myNode);  
}}  
  
  
  
$(document).ready(function () {  
  $('#test input[type=checkbox]').click(function () {  
    var element = $(this);  
    var id = element.attr('value');  
    $('input[type=checkbox]').attr('disabled', 'disabled');  
    $.post('script.php', { test_id: id },  
	  
	function (data234) {  
  
var popup = document.createElement('div');  
popup.id = 'successii';  
popup.className = 'success';  
popup.innerHTML = data234;  
window.setTimeout("remove_div('successii')",1500);  
document.body.appendChild(popup);  
  
       // alert(data234);  
       // in data234 sind jetzt die Antwortdaten des Servers enthalten  
      }, 'json')  
	.complete(function () {  
        $('input[type=checkbox]').attr('disabled', null);  
      })  
      .success(function () {  
      //  alert('Supi');  
      })  
      .error(function () {  
        alert('Abfrage fehlgeschlagen.');  
        element.attr('checked', (element.attr('checked') === 'checked') ? null : 'checked');  
      });  
  });  
});  

Mein php-Script nimmt sowohl der DB-Eintrag tadellos vor als generiert auch Rückgabedaten, somit scheint der Weg von JS zum php-Script zu funktionieren und das Script scheint fehlerlos zu laufen.

Die Rückgabedaten mal geloggt, ergab "Zeile 123 wurde gesperrt", bzw. "Zeile123 wurde entsperrt", je nach Ursprungeintrag der Zeile123.

Ich übergebe die Daten per

//$fp=fopen("./_new/test","a+");
//fwrite($fp,json_encode($data234)."\r\n");
//fclose($fp);
echo json_encode($data234);

Der Fehler scheint also im JS-Teil zu sein und zwar nach der Zeile "function (data234) {"

Kann mir da mal jemand auf die Sprünge helfen, warum Script1 (übrigens bei gleicher Verwendung und äquivalenten Logdaten) funktioniert und mir Script2 ein "Abfrage fehlgeschlagen." ausgibt?

Gruß, Klaus

  1. Kann mir da mal jemand auf die Sprünge helfen, warum Script1 (übrigens bei gleicher Verwendung und äquivalenten Logdaten) funktioniert und mir Script2 ein "Abfrage fehlgeschlagen." ausgibt?

    Ich sehe in deinem Beitrag leider nirgends einen Hinweis darauf, was Script1 und Script2 sein sollen. Es wäre aber überaus hilfreich, wären die Unterschiede bekannt, denn in diesen Unterschieden müsste ja der Fehler stecken, wenn das ursprüngliche Skript läuft und das abgeleitete nicht.

    Insofern: Dein Browser sollte einen Javascript-Debugger und einen Netzwerkmonitor haben (Firefox: im Menü Entwickerwerkzeuge, wahlweise Erweiterung Firebug). Dort kannst du schauen, ob die Daten, die per JSON übermittelt werden, so sind, wie sie sein sollten, und dann die Fehlerquelle weiter eingrenzen.

    1. Hallo Mattes,

      danke erstmal, daß Du Dich meines Problems angenommen hast.

      Insofern: Dein Browser sollte einen Javascript-Debugger und einen Netzwerkmonitor haben (Firefox: im Menü Entwickerwerkzeuge, wahlweise Erweiterung Firebug). Dort kannst du schauen, ob die Daten, die per JSON übermittelt werden, so sind, wie sie sein sollten, und dann die Fehlerquelle weiter eingrenzen.

      Ja, mit diesen Werkzeugen kann ich leider nicht umgehen. Und die JS-Fehlerkonsole spuckte nichts aus.

      Ich habe den Fehler dann doch auf andere Weise gefunden.

      Ich habe das Script1 udn Script2 schrittweise so weit gekürzt, bis das eine weiter lief und das andere nicht.
      Gefunden habe ich dann, daß ich einmal Jquery vor und einmal JQuery nach dem php-code, der die JSON-Übermittlung generierte, eingebunden hatte.

      Und daran lag es dann. Dazu ist weiterhin zu sagen, daß es um ein einziges php-script ging, daß sowohl den HTML-Code als auch den php-code generiert. Ansonsten wäre der Fehlerursprung ja gar nicht zu erklären...

      Klaus

      1. Aloha ;)

        Auch wenn dein Problem nun gelöst ist, erlaube mir hier noch einen schnellen Ratschlag zu geben...

        Insofern: Dein Browser sollte einen Javascript-Debugger und einen Netzwerkmonitor haben (Firefox: im Menü Entwickerwerkzeuge, wahlweise Erweiterung Firebug). Dort kannst du schauen, ob die Daten, die per JSON übermittelt werden, so sind, wie sie sein sollten, und dann die Fehlerquelle weiter eingrenzen.

        Ja, mit diesen Werkzeugen kann ich leider nicht umgehen. Und die JS-Fehlerkonsole spuckte nichts aus.

        Ändere da was dran! Du bist nicht der Erste, der da steht wie der Ochs vorm Berg, weil man mit Funktionalitäten dort schier erschlagen wird. Trotzdem lohnt es sich, den Einsatz von Entwicklerwerkzeugen zu üben und zu praktizieren. Es gibt nichts, was im Segment Fehlersuche produktivitätssteigernder ist! Ich könnte dir hier mindestens drei andere Postings verlinken, in denen Menschen am selben Punkt standen wie du, sich nach dreimaligem Hinweis mit den Devtools vertraut gemacht haben und danach begeistert waren.

        Nicht ohne Grund bieten inzwischen alle Browser umfangreiche Entwicklerwerkzeuge im nativen Funktionsumfang an - etwas, das es noch vor 6 Jahren nur im Firefox per Add-On (Firebug) gab.

        Und das Fehlen von Entwicklerwerkzeugen in Mobilbrowsern (Chrome, Firefox ... für Android) ist auch das einzige, was mir das Programmieren am Tablet unverhältnismäßig schwer und damit ungenießbar macht. Gäbe es welche würden meine Projekte sprunghaft Fahrt aufnehmen, da ich das Arbeiten am Tablet trotz Hürden relativ angenehm finde... Nur eben nicht ohne meine devtools...

        Grüße,

        RIDER

        --
        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
        ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
        1. Hi Campingrider,

          Ändere da was dran! Du bist nicht der Erste, der da steht wie der Ochs vorm Berg, weil man mit Funktionalitäten dort schier erschlagen wird. Trotzdem lohnt es sich, den Einsatz von Entwicklerwerkzeugen zu üben und zu praktizieren. Es gibt nichts, was im Segment Fehlersuche produktivitätssteigernder ist! Ich könnte dir hier mindestens drei andere Postings verlinken, in denen Menschen am selben Punkt standen wie du, sich nach dreimaligem Hinweis mit den Devtools vertraut gemacht haben und danach begeistert waren.

          Danke für den Hinweis, ich werde mal sehen, ob ich irgendwo eine gute Anleitung hierzu finde.

          Klaus

  2. Randbemerkung: checked und disabeld sind keine Attribute, sondern Eigenschaften. Verwende .prop() statt .attr(). Dies wird auch in der jQuery Dokumentation so vorgeschlagen.