2014-09-30 2 views
0

iQuery를 사용하여 서버에 AJAX 호출을하고 값 집합을 반환합니다. 반환되는 값은 동적입니다. 결과 수가 동적 임 결과 세트를보고 HTML 요소에 값을 할당하여 웹 페이지에 표시 할 수 없습니다.JQuery를 사용하여 AJAX 호출의 ResultSet에 값이 있는지 확인하는 방법

결과 집합에 값이 있으면 내 시스템에서 동일한 값을 사용하면 어떻게 보일 수 있는지 조언하십시오. 결과 집합의 최대 개수는 16이고 스크립트에서 수동으로 값을 할당했습니다.

내 웹 페이지의 준비된 문서에서 AJAX 메서드 호출.

$(document).ready(function() { 
    CallAJAX('../Forms/Send.aspx/refreshDash', '', 'FillMethod', 'FillMethodE'); 
}); 

AJAX 호출 정의

function CallAJAX(ServerMethod, Parameters, SuccessMethod, ErrorMethod) { 
    $.ajax({ 
     type: "POST", 
     url: ServerMethod, 
     data: Parameters, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     error: function (xhr, status, errorThrown) { 
      Error = xhr; Result.d.ResultSet[0].TRCOUNT 
      eval(ErrorMethod + "()"); 
     }, 
     success: function (msg) { 
      Result = msg; 
      var rr = SuccessMethod + "();"; 
      eval(rr); 
     } 
    }); 
} 

오류가 발생할 때 세부 사항 및 프롬프트 메시지를 표시하는 두 jQuery를 기능 사용. 참고 오류 기능이 표시되지 않습니다. 단 Result.d.ResultSet [0] .DASH_NAME 유효한 값을 가지며 다음 인덱스가 어떤 값이없는 경우

function FillMethod() { 
    if ($.isEmptyObject(Result.d.ResultSet)) { 

    } 
    else { 

     $('[id$=lblCode1]').html(Result.d.ResultSet[0].DASH_NAME); 
     $('[id$=lblNot1]').html(Result.d.ResultSet[0].TRCOUNT); 

     $('[id$=lblCode2]').html(Result.d.ResultSet[1].DASH_NAME); 
     $('[id$=lblNot2]').html(Result.d.ResultSet[1].TRCOUNT); 


     $('[id$=lblCode3]').html(Result.d.ResultSet[2].DASH_NAME); 
     $('[id$=lblNot3]').html(Result.d.ResultSet[2].TRCOUNT); 

     $('[id$=lblCode4]').html(Result.d.ResultSet[3].DASH_NAME); 
     $('[id$=lblNot4]').html(Result.d.ResultSet[3].TRCOUNT); 

     $('[id$=lblCode5]').html(Result.d.ResultSet[4].DASH_NAME); 
     $('[id$=lblNot5]').html(Result.d.ResultSet[4].TRCOUNT); 

     $('[id$=lblCode6]').html(Result.d.ResultSet[5].DASH_NAME); 
     $('[id$=lblNot6]').html(Result.d.ResultSet[5].TRCOUNT); 


     $('[id$=lblCode7]').html(Result.d.ResultSet[6].DASH_NAME); 
     $('[id$=lblNot7]').html(Result.d.ResultSet[6].TRCOUNT); 

     $('[id$=lblCode8]').html(Result.d.ResultSet[7].DASH_NAME); 
     $('[id$=lblNot8]').html(Result.d.ResultSet[7].TRCOUNT); 


     $('[id$=lblCode9]').html(Result.d.ResultSet[8].DASH_NAME); 
     $('[id$=lblNot9]').html(Result.d.ResultSet[8].TRCOUNT); 

     $('[id$=lblCode10]').html(Result.d.ResultSet[9].DASH_NAME); 
     $('[id$=lblNot10]').html(Result.d.ResultSet[9].TRCOUNT); 


     $('[id$=lblCode11]').html(Result.d.ResultSet[10].DASH_NAME); 
     $('[id$=lblNot11]').html(Result.d.ResultSet[10].TRCOUNT); 

     $('[id$=lblCode12]').html(Result.d.ResultSet[11].DASH_NAME); 
     $('[id$=lblNot12]').html(Result.d.ResultSet[11].TRCOUNT); 

     $('[id$=lblCode13]').html(Result.d.ResultSet[12].DASH_NAME); 
     $('[id$=lblNot13]').html(Result.d.ResultSet[12].TRCOUNT); 

     $('[id$=lblCode14]').html(Result.d.ResultSet[13].DASH_NAME); 
     $('[id$=lblNot14]').html(Result.d.ResultSet[13].TRCOUNT); 


     $('[id$=lblCode15]').html(Result.d.ResultSet[14].DASH_NAME); 
     $('[id$=lblNot15]').html(Result.d.ResultSet[14].TRCOUNT); 

     $('[id$=lblCode16]').html(Result.d.ResultSet[15].DASH_NAME); 
     $('[id$=lblNot16]').html(Result.d.ResultSet[15].TRCOUNT); 
    } 
}; 
function FillMethodE() { 


} 

문제는 FillMethod 함수에서 발생되고있다. 참고 : 결과가 쌍으로 반환됩니다. DASH_NAME을 사용할 수 있으면 TRCOUNT를 동일한 색인에 사용할 수 있습니다.

Dynamic Result 1 Dynamic Result 2

내가해야 할 일은 상관없이 내가 동적으로 설정 결과에서 주문 값을 라벨에 표시해야하는 결과 카운트입니다. 다음은 얻을 수있는 두 세트의 결과 세트입니다.

+1

왜 처음에는'eval()'을 사용하고 있습니까? 이것은 악마 그 자체입니다. 절대 사용하지 마십시오. – melancia

+0

둘째,'FillMethod' 함수에서 루프를 사용하지 않으시겠습니까? – Jerodev

+0

문제가 무엇인지는 분명하지 않습니다. 결과가 동적 인 것은 무엇이 문제입니까? 결과가 배열 인 경우 해당 배열을 반복하면됩니다. 그리고 두 번째 다른 사용자의 질문에, 왜 함수를 직접 호출하는 대신에'eval'을 사용하고 있습니까? – David

답변

2

나는 아직도 정말 정말는 특정 문제가 무엇 불분명 같네요 (샘플 결과가 당신이 어떤 선명도를 제공하지 않습니다 게시 설정하십시오 왜 당신은 할 수 없습니다 그들에 단순히 루프),하지만 난 ... 추측을 기꺼이은

는 출력에 대한 자리의 정적 세트에 결과를 동적 세트를 작성하려는 문제인가 ?

그런 경우 자리 표시자를 고정시키지 마십시오. 결과를 보여줄 빈 공간을 유지하고 결과가 나오면 페이지의 해당 부분에 결과를 기록하십시오. HTML 요소가 이미 필요하므로 동적으로 만들 수 있습니다. 예를 들어 :

success: function (msg) { 
    // let's assume msg is an array of data 
    for(var i = 0; i < msg.lengh; i++) { 
     $('#output').append(
      '<div>' + msg[i].DASH_NAME + ' - ' + msg[i].DASHSTATUS + '</div>' 
     ); 
    } 
} 

그래서 당신의 #output 그냥 div 경우, 그 결과는 다음과 같을 것이다 :

<div id="output"> 
    <div>SEND CONFIRMED - 1</div> 
    <div>RECV HO RESPONDED - 4</div> 
    <div>RECV HO PAID - 3</div> 
    <!-- etc... --> 
</div> 

어떻게 물론, 마크 업이 전적으로 당신에게 달려 있음을 정의하고 스타일. 요점은 자바 스크립트 코드에서 바로 마크 업을 만들 수 있기 때문에 AJAX 요청의 결과에 따라 동적으로 만들 수 있다는 것입니다.

+0

고맙습니다. 나는 정말로 내가 물건을 전달하는 방법에 대해 연구 할 필요가있다. 문제는 단순히 코드에 루프를 추가함으로써 해결되었다. 내가 따라온 방법은 정말 나쁜 습관이었다. – Dilip

+0

@Dilip : 마침내 도움이 되었기 때문에 기쁩니다. 일반적인 조언으로, 더 많은 JavaScript 작업을 수행하려면 ASP.NET WebForms 컨트롤 구조를 놓아 두는 것이 가장 좋습니다. 대신 ASP.NET MVC를 채택하고 제공되는 마크 업 및 클라이언트 측 코드를보다 세부적으로 제어하는 ​​것이 좋습니다. WebForms에서 동일한 컨트롤을 구현할 수 있습니다. 좀 더 까다 롭습니다. – David

+0

정말 그렇게하기 위해 약간의 도움을 받고 싶습니다. 제게 출발점을 알려주십시오. 나는 현장에서 아마추어이고 작은 작은 일을하고 지식을 얻으려고 노력하고 있습니다. – Dilip

0

if (Result.d.ResultSet.length > 0) { 
for (i = 0; i < Result.d.ResultSet.length; i++) { 
    $('[id$=lblCode'+i+']').html(Result.d.ResultSet[i].DASH_NAME); 
    $('[id$=lblNot1'+i+']').html(Result.d.ResultSet[i].TRCOUNT); 

} 
관련 문제