2012-01-15 13 views
3

を表示しません。jQueryのUIのタブ:JSONは、私はアヤックスとのjqueryのUIのタブを使用してい

アヤックスは、このような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で動作する最初の時間は非常に私を許してい

EDIT:JSONのコンテンツは、コンテンツタイプを削除し、コンテンツタイプ=アプリケーション/ JSONで送られますjsonを表示しますが、jsonを使用してjsonファイルを解析する必要がありますか?

+0

返信データの代わりにdata.contentを返す –

答えて

5

dataType : 'json'(この質問Why is 'jQuery.parseJSON' not necessary?に私の答えを見てください)を指定してから、あなたはあなたのための応答を解析するので、あなたは$.parseJSON(result);を呼ぶべきではないと思います。他の例を見ると、あなたはまた、

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

はEDIT返す必要があります - dataType: 'json'せ、これは[OK]をする必要があり

コンテンツが正しくため、この部分のタブにロードされていない
 dataFilter : function(result) { 
      return result.content; 
     }, 
+1

dataTypeを追加すると動作します:html –

+0

@MatteoPagliazziはい、 'dataType: 'json''とし、' return result.content'としましょう。私の答え –

+0

がparseJSONを削除し、データ型を使用して:「JSON」は動作しません....奇妙だ –

2

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

あなたは、JSONなどのデータを受信するので、resultはjavascriptオブジェクトです。しかし$.parseJSON()にはオブジェクト(see docs)ではなく文字列が必要です。 dataType : 'html'の場合、この設定のデータはテキストとして返されるため、書き込み時に機能します。あなたがdataType : 'html'を設定するか、またはdataFilter一部を取り除く

はそれを修正するには。 json形式でデータを要求すると、jQueryは$.parseJSON()を内部的に呼び出します。

UPDATE:一つより多くの情報あなたが$.parseJSON()ですべてのエラーを取得しない理由 - jQueryの1.4の時点では、JSONファイルに構文エラーが含まれている場合、要求は通常、黙っsee docs too

0

を失敗し、私はそれを見つけましたシンプルなbeforeLoadハンドラにfalseを返し、beforeLoadハンドラ内からgetJSON要求を送信します。私の答えhereを参照してください。