Newsgroup: it.comp.lang.javascript
Titolo: jquery + ajax + json in una literal class

Ciao a tutti
sto sviluppando del codice usando la oop di javascript. Ho quindi implementato una literal class così:
 
 
var revisionTools = {
 
  .....  
 
  defField    : null,
 
  .....
 
  saveValue : function () {
 
    $.ajax({
 
      url           : 'script/saveValue.php',
      data          : 'field=' + this.fieldName + '&idArt=' + this.idArt + '&type=' + this.fieldType,
      type          : 'GET',
      dataType      : 'json',
      success       : this.drawHtml(),
      error         : this.errorSave()
    });
  },
 
  drawHtml : function() {
 
    // Imposto il valore revisionato nel campo originale
    this.defField.val(this.revField.val());
 
    // Rimuovo ilcampo della revisione
    $('#' + this.fieldName + 'Rev').remove();
  },
 
  errorSave : function() {
 
    alert('qualcosa non va');
  }
 
}
 
La cosa che non capisco è perchè mi esegue sia il metodo errorSave che il metodo drawHtml. Il file che viene chiamato da ajax (script/saveValue.php) non fa altro che una query su db.
 
Qualcuno sa spiegarmi questo comportamento?
 
Grazie

Implementando il metodo così funziona:
 
  saveValue : function () {
 
    $.ajax({
 
      url           : 'script/saveValuse.php',
      data          : 'field=' + this.fieldName + '&idArt=' + this.idArt + '&type=' + this.fieldType,
      type          : 'GET',
      dataType      : 'json',
      success       : function() {
 
                        // Imposto il valore revisionato nel campo originale
                        revisionTools.defField.val(revisionTools.revField.val());
 
                        // Rimuovo ilcampo della revisione
                        $('#' + revisionTools.fieldName + 'Rev').remove();
                      },
      error         : function (jqXHR, textStatus, errorThrown) {
 
                        alert(textStatus);
                      }
    });
  },
 
Perchè? Devo per forza definire il metodo di seguito al success e all'error??

 Qualcuno sa spiegarmi questo comportamento?
 
Spero di essere stato chiaro. :)

   },
 
Il `this` di `drawHtml` non sarà più `revisionTools`, quando verrà
eseguita dalla chiamata ajax. Per intenderci, tu stai passando un
riferimento a funzione. Per essere più esplicativo:
 
    var Nick = {
        myName : "Nick",
 
        say : function() {
            alert(this.myName);
        }
    }
 
    var John = {
        myName : "John",
 
        say : Nick.say
    }
 
    var myName = "Chris";
    var say = Nick.say;
 
    Nick.say(); // Nick
    John.say(); // John
    say(); // Chris
 
Per mantenere l'oggetto di contesto, devi usare `bind` (ES5, laddove
supportato, altrimenti usa uno shim per emularlo laddove non supportato):
 
    var John = {
        myName : "John",
 
        say : Nick.say.bind(Nick)
    }
 
    John.say(); // Nick
 
Oppure, come hai fatto nell'altro tuo post, puoi esplicitare il nome del
tuo oggetto all'interno del metodo:
 
 
    var Nick = {
        myName : "Nick",
 
        say : function() {
            alert(Nick.myName);
        }
    }
 
Hope it helps.

Grazie ZERO,
sei stato molto chiaro!!
 
E grazie per la precisazione riguardo il literal object, mi ero sbagliato! :)