2014-03-19 3 views
0

Ajax 호출에서 JSON이 0을 반환하면 "표시 할 데이터 없음"(DataTable 사용 중) 메시지를 표시하려고합니다. 그러나 어떻게 그것을 알아낼 수 없습니다.Ajax 함수가 0 레코드를 반환 할 때 메시지를 표시하는 방법

if 문으로

$("#noData").show(); 

을 시도했지만 작동하지 않았다.

<div id="noData" class="grid_4 alpha" style="display: none;">No data to display</div> 

다음은 표를 그려주는 코드입니다.

function FillTable() { 
    var title = plotData.title + '/' + YMLabel(plotData.startYM) + " - " + YMLabel(plotData.endYM); 

    if (table != null) { 
     table.fnDestroy(true); 
    } 

    $("#tabContainer").empty() 
     .html('<h1 class="pageTitle">' + title + '</h1><img src="../styles/loading.gif">'); 

    $.ajax({ 
     url: "ajax_incidents_table.asp", 
     type: "POST", 
     data: { 
      startYM: plotData.startYM, 
      endYM: plotData.endYM 
     }, 
     timeout: 10000, 
     success: function (ajaxData) { 
      var htmlstr = '<h1 class="pageTitle">' + title + '</h1><table id="table"></table>'; 
      $('#tabContainer').html(htmlstr); 
      var tabSettings = { 
       sDom: 'rt', 
       bPaginate: false, 
       sScrollX: "100%", 
       bScrollCollapse: true, 
       bFilter: false, 
       aoColumns: ajaxData.aoColumns, 
       aaData: ajaxData.aaData 
      } 
      table = $('#table').dataTable(tabSettings); 
      SetTooltips() 
      ShowDescription(); 
     }, 
     error: function (x, t, m) { 
      alert('error: ' + m); 
      $('#tabContainter').html("<h3>An error has occured. (" + t + "/" + m + ")</h3>"); 
     } 
    }); 
+0

관련성이없는 것으로 보이는 태그 몇 개를 제거했습니다. 내가 틀렸다면 다시 추가하십시오. –

+0

'ajaxData'의 구조를 보지 않고서도이 질문에 답하기는 어려울 것입니다. 그러나'ajaxData.aaData'의 길이를 확인할 수 있다고 가정합니다. 시도하지 않은 if 문은 무엇입니까? –

+0

http://jsfiddle.net/LFuQc/ 여기 ajaxData'구조체 '가 있습니다. – shaz

답변

0

0은 요청이 200 (성공)으로 되돌아 오는 경우에만 반환됩니다. 그렇지 않으면 error 함수가 실행되고 사용자에게 오류 메시지가 나타납니다.

그래서 당신은 이것을 시도 할 수 있습니다 :

success: function (data) { 
    if(data == 0) { // if the result is 0 
    $('#noData').show(); // show the div.. 
    } 
} 

이 방법, 당신은 성공 함수의 결과 값을 확인할 수 있습니다.

두 번째로 브라우저의 검사기 네트워크 탭에서 네트워크 요청을 확인할 수 있습니다. F12을 누르고 네트워크 탭으로 이동하여 요청과 관련된 모든 정보를 확인한 후 조건에 따라 코드를 작성하십시오.

+0

이것은 이전에 시도한 것으로 메시지가 표시되지 않았습니다. 데이터는 0입니다. 서버 측에서 레코드가 0 일 때 DebugWrite ("표시 할 데이터 없음") 을 인쇄하려고하기 때문에 0을 알았습니다. – shaz

+0

반환 값은 'return 0;'입니까? 그렇지 않으면 작동하지 않습니다. 결과는 단 하나 charactered 0이어야합니다 ... –

+0

나는 서버 측 코드에서 잘못하고있는 것 같아요. SQL에서 0 레코드를 반환하면 코드가 실행되지 않습니다. 그것을 확인할 수 있듯이 http://jsfiddle.net/LFuQc/ 45 번부터 51 번까지. JSON이 생성되고 전달되지 않는다고 생각합니다.죄송합니다. – shaz

0

클라이언트 측 코드는 @Afzaal Ahmed Zeeshan이 위에 대답 한 것을 분명히 필요로했습니다. 그 실제 문제와 함께

if(ajaxData.aaData == null) 
{ 
    $('#noData').show(); 
} 

Ajax 부분이었다. 데이터베이스 쿼리가 레코드를 반환 할 때 다음을 전달해야했습니다.

json=json&",""aaData"":[null]}" 

클라이언트 측 코드에서 json 형식 데이터가 필요했습니다. 하지만 Response.Write을 사용하여 NO DATA에 대한 메시지를 표시하려고했는데 주 - ASP 파일에 텍스트 (문자열)를 보내고 형식은 Jason이 아닙니다.

관련 문제