2011-12-16 19 views
1

私は、jsonを使用してjQoteを使用して新しいデータを取り込んだHTMLテーブルを更新しようとしています。jqote returned returned un

私はかなり単純なjqoteテンプレートを持っている:

<script type="text/html" id="template"> 
    <![CDATA[ 
     <tr> 
      <td><%= this.customer_id %></td> 
      <td><%= this.campaign_id %></td> 
      <td><%= this.cname %></td> 
      <td><%= this.create_date %></td> 
      <td><%= this.phone %></td> 
      <td><%= this.sname %></td> 
      <td><%= this.reminder %></td> 
      <td><%= this.appt_date %></td> 
      <td><%= this.note %></td> 
      <td><%= this.unread %></td> 
     </tr> 
    ]]> 
</script> 

そして、ここでは私のJSONです:

[{ 
    "customer_id": "2081", 
    "campaign_id": "812", 
    "cname": "Jeff", 
    "create_date": "3 days ", 
    "phone": "1111111111", 
    "sname": "Massage Appointment", 
    "reminder": "0", 
    "appt_date": "0", 
    "note": "", 
    "unread": "2" 
}] 

そして、ここでは私のjQueryの:

$.ajax({ 
    type: 'POST', 
    url: 'url/for/json/return', 
    dataType: 'text/json', 
    data: 'huh', 
    success: function(jsondata){ 
     row = $('#template').jqote(jsondata); 
     $('#customers > tbody').html(row); 
    }, 
} 
}); 

AJAXリクエストが細かいとjsondata走りま​​す内部に適切なデータが格納されていますが、jQoteタグはすべて未定義に戻っています。誰かが私が間違っていることを見ていますか?

答えて

0

ジェフ、POSTを経由して取り出されたJSON data変数は単なる文字列です。 jQoteに渡す前に、$.parseJSONと解析する必要があります。もう一つの可能​​性は、既に自分自身を理解しているように、自動的に応答を解析するjQueryの$.getJSONメソッドを使用することです。あなたはjQote2とjQuery 1.4.1以上が利用している場合には

あなたは、このようなあなたのスクリプトを書き換える必要があります:$().jqotesubの説明については

$.ajax({ 
    type: 'POST', 
    url: 'url/for/json/return', 
    dataType: 'text/json', 
    data: 'huh', 
    success: function(jsondata){ 
     var data = $.parseJSON(jsondata); 
     // Call the "substitute HTML" convenience method 
     $('#customers > tbody').jqotesub('#template', data); 
    } 
}); 

jQote2 referenceを見ています。

+0

ありがとうございました!奇妙なことに、このようにjQoteを使って見た例では、parseJSONを使用する必要性について説明していませんでした。 –

0

私は何をする必要があるかの実例を見つけることができました。ここで私が使用される新しいjQueryのです:

var jsondata = $.getJSON('/url/for/json/return/ajax/', function(data) { 
    row = $('#template').jqote(data); 
    $('#customers > tbody').html(row); 
});