2011-10-24 4 views
0

나는 다음과 같은 코드를 가지고 : 서버 측에서JQuery와 아약스 성공 콜백 어려움

@{ 
    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 (부울)
  • 이름

나는 결과의 반환 세트를 통해 반복하고 앵커 요소를 구축하고 사업부라는 이름의 목록에 추가 할 . 왜 이것이 작동하지 않는지 아십니까? 자바 스크립트 오류가 발생하지 않습니다.

+0

귀하의 코드 일부 자바 스크립트하는 주형 라이브러리에 더러운 HTML 건설 작업을두면 많은 청소기와 경향이 덜 오류가 발생합니다. – saintedlama

답변

1

jQuery가 오류를 ... 불행하게도 죽입니다.

그래도 작동하지 않으면 일부 JSON을 게시하십시오. 빠른 다시에

빌어 먹을 :

$.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