2009-08-08 15 views
0

Hier ist mein JSON-Objekt.jQuery AJAX JSON-Fehler

{ 
     "verbs" : [ 
     "process", 
     "refine", 
     "define" 
     ], 
     "adjectives" : [ 
     "process", 
     "audio", 
     "language" 
     ], 
     "subjects" : [ 
     "process", 
     "development", 
     "technique"  
      ] 
} 

Hier ist mein Versuch, die Daten über die jQuery AJAX-Methode zuzugreifen und zu verarbeiten.

jQuery.ajax({ 
    type : "POST", 
    dataType : "json", 
    url : "js/tsbtw-object.js", 
    success : function(data, statusText){ 

     var verbArray = data.verbs; 

     for(var i = 0; i<verbArray.length; i++){ 

      var verbTime = Math.floor(Math.random()*1000); 

      jQuery("#verb-content").fadeOut(verbTime, function(){ 
       (this).text(verbArray[i]).fadeIn(verbTime); 
      }); 
     } 

    }, 
    error: function (xhr, ajaxOptions, thrownError){ 
     alert(xhr.statusText); 
     alert(thrownError); 
    } 
}); 

Ich erhalte zwei Fehler in der FireBug-Konsole.

ungültiges Etikett "Verben": [\ n

this.text ist keine Funktion (this) .text (verbArray [j]) fadeIn (verbTime); \ n

I. war ziemlich spät dran, um das herauszufinden, und dachte, ich würde es aus der Community rausschmeißen, um Einsicht zu bekommen.

Danke!

Antwort

2

Versuchen Sie $(this).text anstelle von (this).text. Beachten Sie auch, dass this, da Sie in einem Ajax-Callback sind, auf die Optionen für die Ajax-Anforderung verweist, sodass die text-Funktion möglicherweise nicht definiert ist. Stattdessen könnten Sie versuchen mit:

var _this = this; 
jQuery.ajax({ 
    type : "POST", 
    dataType : "json", 
    url : "js/tsbtw-object.js", 
    success : function(data, statusText){ 
     var verbArray = data.verbs; 
     for(var i = 0; i<verbArray.length; i++){ 
      var verbTime = Math.floor(Math.random()*1000); 
      jQuery("#verb-content").fadeOut(verbTime, function(){ 
        $(_this).text(verbArray[i]).fadeIn(verbTime); 
      }); 
     } 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     alert(xhr.statusText); 
     alert(thrownError); 
    } 
}); 
+0

Nein, in diesem Fall $ (this) verweist auf $ ('# Verb-Inhalt'), nicht auf die Optionen der Ajax-Anfrage. – pixeline