2011-02-04 8 views
1

私はサーバーサイドからjsonを生成する必要があります。しかし、このjsonデータをjQueryで簡単に使用できるようにフォーマットする方法はわかりません。3つの入力フィールド用にJSONをフォーマットする

ここには私の脚本があります。私は3つの入力フィールドを埋めることができるようにjsonデータをフォーマットする最良の方法は何ですか?

$('input#btnGet').click(function() { 
    $.ajax({ 
     url: 'generate_json.aspx', 
     type: 'POST', 
     data: { intPageID:1 }, 
     success: function(results) { 
      $('input#id').val('id goes here'); 
      $('input#heading').val('heading goes here'); 
      $('input#content').val('content goes here'); 
     } 
    }); 
}); 

答えて

3

あなたのオプションにdataType: 'json'を追加する場合は、jQueryの直接JavaScriptオブジェクトにJSONをデコード:

"JSONを":JSONとしてレスポンスを評価し、JavaScriptオブジェクトを返します。 jQuery 1.4では、JSONデータは厳密に解析されます。不正なJSONが拒否され、解析エラーがスローされます。 (適切なJSONフォーマットの詳細については、json.orgを参照してください。)

あなたが受信/ JSONを想定すると、生成され

'{"id": 6, "heading": "heading", "content": "content"}' 

あなたのコードは次のようになります。

$.ajax({ 
    url: 'generate_json.aspx', 
    type: 'POST', 
    data: { intPageID:1 }, 
    dataType: 'json', 
    success: function(results) { 
     $('#id').val(results.id); 
     $('#heading').val(results.heading); 
     $('#content').val(results.content); 
    } 
}); 

の場合あなたのJSON文字列が代わりに配列を表している場合、もちろんresultsはJavaScript配列であり、ループしなければなりません。


Btw。 IDは一意であるため、セレクタにタグ名を付加する必要はありません。

+0

そして、機能に建て明示があるとしてタグ名を追加するために、実際に悪いですID年代とDOMで最も速い方法であるIDだけで要素を取得するため、jQueryは純粋なIDセレクタでそれらを使用できます:) –

1

dataTypeを "json"と指定すると設定されます。

$.ajax({ 
    url: 'generate_json.aspx', 
    type: 'POST', 
    data: { intPageID:1 }, 
    dataType: "json", 
    success: function(result){$("#heading").val(result.heading)} 
    }); 
+0

これは、最初の場所でサーバーからJSON文字列をフォーマットする方法についての彼の質問に答えるものではありませんどのようにクライアント上でそれを解析するか); –

+0

@DavidMårtensson:うーん、JSONをフォーマットする唯一の方法は... JSON標準が指示する方法です! :)( 'json_encode' PHP関数はこの意味でかなりうまく機能します)。 – nico

1

あなたのサーバーがこれを返す場合:

{ 
    "id": "1", 
    "heading": "yadayada" 
    "content": "foobar" 
} 

あなたが好きそれを使用することができます:

success: function(results) { 
    $('input#id').val(results.id); 
    $('input#heading').val(results.heading); 
    $('input#content').val(results.content); 
} 
関連する問題