2009-08-08 78 views
0

这是我的JSON对象。jQuery AJAX json错误

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

这里是我尝试通过jQuery AJAX方法访问和处理数据。

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); 
    } 
}); 

我在FireBug控制台中收到两个错误。

无效标签 “动词”:[\ n

this.text不是函数 (本)的.text(verbArray [J])淡入(verbTime); \ n

予。为了解决这个问题,相当晚了,并且认为我会把它踢出社区以获得见解。

谢谢!

回答

2

尝试$(this).text而不是(this).text。另请注意,因为您正在使用ajax回调函数this指向ajax请求的选项,所以text函数可能未定义。相反,你可以尝试:

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

不,在这种情况下,$(this)指向$('#verb-content'),而不是ajax请求的选项。 – pixeline 2009-08-08 21:18:27