2011-10-24 22 views
0

私は、次のコードを持っている:私は、Customerオブジェクトのリストを返すよ、サーバ側からjqueryのAJAXの成功コールバック難易

@{ 
    ViewBag.Title = "Index"; 
} 
<h2> 
    Index</h2> 
<div data-role="page"> 
    <div data-role="header"> 
     ...</div> 
    <div data-role="content"> 
     <a id="btnShowCustomers" data-role="button" href="#secondDiv"></a> 
    </div> 
    <div data-role="footer"> 
     ...</div> 
</div> 
<div id="secondDiv" data-role="page"> 
    <div id="list" data-role="content"> 
    </div> 
</div> 
<div id="customerDetailsDiv" data-role="page"> 
    <div data-role="content"> 
    </div> 
</div> 
<script type="text/javascript"> 
    $(document).ready(function (event) { 
     $('#btnShowCustomers').bind('vclick', function (event) { 
      GetCustomers(); 
     }); 
    }); 

    function GetCustomers() { 
     var webMethod = "Home/GetCustomers"; 
     $.ajax({ 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      url: webMethod, 
      data: "{}", 
      dataType: "json", 
      success: function (dataObj) { 
       $(dataObj).each(function() { 
        if ($(this).CanConsume) { 
         alert('can consume'); 
         $('<a href="#" data-date="' + $(this).DateActivated + '" data-id="' + $(this).ID + '">' + $(this).Name + '</a>').appendTo('#list'); 
        } 
       }) 
      } 
     }); 
    } 
</script> 

を。顧客は以下の特性を有する。

  • ID
  • CanConsume
  • DateActivated(ブール値)
  • 名前

私は結果を返されたセットを反復処理し、アンカー要素を構築し、divの名前のリストにそれらを追加したいです。なぜこれが機能していないのか分かりませんか?私はjavascriptのエラーを取得します。

+0

あなたのコードでは、多くのクリーナーとよりエラーが発生しやすいでしょう。 – saintedlama

答えて

1

jQueryがエラーを...残念ながら...

これで解決しない場合は、JSONを投稿してください。迅速に

いまいましい、再び:あなたは、いくつかのJavaScriptテンプレート化ライブラリに汚れたHTMLの建設の仕事を残せば

$.each(dataObj, function (index, element) { 
    if (element.CanConsume) { 
      alert('can consume'); 
      $('<a href="#" data-date="' + element.DateActivated + '" data-id="' + element.ID + '">' + element.Name + '</a>').appendTo('#list'); 
     } 
}); 
1

dataObjは、プレーンJavaScript(JSON)オブジェクトの通常のリストです。 jQuery.each(...)がDOM要素を反復処理するときに、繰り返し処理するためにjQueryを使用しないでください。

だけで動作するはず

... 
    success: function(dataObj){ 
     for(var i=0; i < dataObj.length; i++){ 
     var obj = dataObj[i]; 
      if (obj.CanConsume) { 
       alert('can consume'); 
       ... 
      } 
     } 
    } 

を試してみてください。

それ以外の場合は、FirebugまたはChrome Dev Toolsを試して応答を確認するか、成功のコールバックにブレークポイントを設定してください。それで問題を解決するのに十分な情報が得られるはずです。

+0

あなたの答えは正しいです。 $ .each()は何かを照会するのに使うことができると思いました:) 6分が経過するとすぐにあなたの答えを正しいものとしてマークします。私の質問に答える時間をとってくれてありがとう! – Dragan

+0

$( 'li')。each()と$ .each、http://api.jquery.com/jQuery.each/があります。 – FloydThreepwood

+0

@FloydThreepwoodそうですね。 – Juri