2012-01-15 3 views
3

저는 jQuery UI에 ajax를 사용하고 있습니다.jQuery UI 탭 : JSON이 표시되지 않습니다.

아약스는 이와 같은 JSON 콘텐츠를 직면하게됩니다.

[ 
    { 
    "title" :"a note", 
    "type" :"text", 
    "content" :"MY FIRST NOTE!" 
    }, 
    { 
    "title" :"two note", 
    "type" :"text", 
    "content" :"MY FIRST NOTE <b>if html works<\/b> i should pay attention to this!" 
    } 
] 

이 코드를 사용하고 있습니다 :

$(function() { 
    $("#tabs").tabs({ 
     cache : false, 
     ajaxOptions : { 
      cache : false, 
      dataType : 'json', 
      dataFilter : function(result) { 
       var data = $.parseJSON(result); 
       return data; 
      }, 
      error : function(xhr, status, index, anchor) { 
       $(" anchor.hash ").html("Couldn't load this tab. We'll try to fix this as soon as possible. " + "If this wouldn't be a demo."); 
      } 
     } 
    }); 
}); 

JSON 파일이 (PHP에 의해 생성)를 제대로 넣었는지 (내가이 질문에 Loading JSON-encoded AJAX content into jQuery UI tabs을 본 적이) 내가 확인했다 그것은 JSONLint를 사용하지만 탭은 흰색이고 내용은로드되지 않습니다. 도와 주시겠습니까?

그것은 내가 바보 같은 오류를하고있어 만약 내가 JSON와 Ajax 작업을 처음 그래서 용서의

편집 : JSON 콘텐츠는 콘텐츠 형식을 제거, 콘텐츠 형식 = 응용 프로그램/JSON으로 전송됩니다 json을 표시하지만 jsonery를 사용하여 json 파일을 구문 분석 할 수 있습니까?

+0

사용 해보 았나 : 데이터 반환 대신에 data.content 반환 –

답변

5

dataType : 'json' (이 질문에 대한 나의 대답을보십시오) Why is 'jQuery.parseJSON' not necessary?을 지정 했으므로 $.parseJSON(result);을 호출하면 안됩니다. 그러면 jQuery가 응답을 구문 분석합니다. 다른 예를 보면 당신은 또한

 dataFilter : function(result) { 
      var data = $.parseJSON(result); 
      return data.content; 
     }, 

편집 반환해야합니다 - dataType: 'json'시키는이 확인을해야

내용이 제대로 때문에이 부분의 탭으로로드되지
 dataFilter : function(result) { 
      return result.content; 
     }, 
+1

데이터 형식 추가 : –

+0

@MatteoPagliazzi 예,하지만'dataType : ' 내 대답 –

+0

parseJSON 제거하고 dataType 사용 : 'json'작동하지 않습니다 .... –

2

:

dataType : 'json', 
dataFilter : function(result) { 
    var data = $.parseJSON(result); 
    return data; 
} 

json으로 데이터를 수신하므로 result은 (는) 자바 스크립트 개체입니다. 그러나 $.parseJSON()에는 문자열이 필요하며 객체 (see docs)는 필요하지 않습니다. 이 설정을 사용하면 텍스트로 반환되기 때문에 쓰기는 - dataType : 'html' 일 때 작동합니다.

dataType : 'html'을 설정하거나 dataFilter 부분을 제거 할 수 있습니다. json 형식으로 데이터를 요청하면 jQuery는 $.parseJSON()을 내부적으로 호출합니다.

UPDATE : 당신이 $.parseJSON()와 오류를하지 않는 이유를 하나 개 더 정보 - JSON 파일에 구문 오류가있는 경우 jQuery를 1.4, 요청이 일반적으로 자동 see docs too

0

실패합니다 나는 그것을 발견 falsebeforeLoad 처리기로 반환하고 beforeLoad 처리기 내에서 getJSON 요청을 보내는 것이 더 간단합니다. 내 대답 here을 참조하십시오.