2009-08-08 7 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]) fadeIn (verbTime) 아니다 \ n

I. 이 문제를 해결하기 위해 상당히 늦게까지 노력했으며, 통찰력을 얻기 위해 커뮤니티를 쫓아 낼 것이라고 생각했습니다.

감사합니다.

답변

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)는 ajax 요청의 옵션이 아니라 $ ('# verb-content')를 나타냅니다. – pixeline