2013-08-08 1 views
-1

JQuery DataTable에 초기 값을 채우는 WebMethod가 있습니다. WebMethod를 호출하고 다른 값으로 채우려는 드롭 다운 목록이 있습니다. JSON 데이터가 null (또는 '')이면 JSON.parse가 발생합니다 : 예기치 않은 데이터의 끝입니다.Ajax 성공 또는 비어있을 때 NO 데이터 표시

이제는 if(msg.d.length !- '' { build the table})을 사용하여 객체의 길이를 확인할 수 있습니다. 그러나 길이가 null ('')이면 빌드 테이블에 절대 들어가서 데이터가 없거나 레코드가 없다는 사실을 알 수 없습니다.

JSON 문자열/개체가 null ('')이면 DataTables에 아직 레코드가 없습니다. 등을 확인할 수 있습니까?

$('#ddBICS').change(function (e) { 

       var val = $('#dd option:selected').text(); 

       msgDateDetail(val); 

      }); 


function msgDateDetail(value) { 
     $.ajax({ 
      type: "POST", 
      url: "Default.aspx/MsgDateDetail", 
      cache: false, 
      data: JSON.stringify({ searchValue: value }), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 

      success: function (msg) { 
       var data = JSON.parse(msg.d); 
       var asInitVals = new Array(); 

       otblMsgDateDetail = $("#tblMsgDateDetail").dataTable({ 
        "sDom": "<'row-fluid'<'span6'T><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>", 
        "oTableTools": { 
         "aButtons": [ 
         "copy", 
         "print", 
         { 
          "sExtends": "collection", 
          "sButtonText": 'Save <span class="caret" />', 
          "aButtons": ["csv", "xls", "pdf"] 
         } 
         ] 
        }, 

        "aaData": data 
       }) 
      } 
     }); 
    } 
+0

을하기 전에

Response.ContentType = "application/json" 

을이 작업을 수행해야합니다 .. –

+0

@CSharpNewBee 전체 msgDateDetail 메서드를 추가하십시오. – nerdybeardo

답변

2

MSG와 같은 길이 그냥 그에게 말할 것이다 변수를 확인, null 또는 정의되지 않은 될 수 있습니다. 또한 JQuery를 사용하고 있기 때문에 d가 isArray JQuery 메소드로 배열인지 확인할 수 있습니다.

if(msg && msg.d && $.isArray(msg.d) && msg.d.length > 0) { 
    // build the table 
}else{ 
    // data is empty 
} 

상기 방법 중 다음을 수행하십시오.

function msgDateDetail(value) { 
    $('#tblMsgDate 
    $.ajax({ 
    type: "POST", 
    url: "Default.aspx/MsgDateDetail", 
    cache: false, 
    data: JSON.stringify({ searchValue: value }), 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 

    success: function (msg) { 
     var asInitVals = new Array(); 

     var data = (msg && msg.d && $.isArray(msg.d))? msg.d : new Array(); 

      otblMsgDateDetail = $("#tblMsgDateDetail").dataTable({ 
      "sDom": "<'row-fluid'<'span6'T><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>", 
      "oTableTools": { 
       "aButtons": [ 
       "copy", 
       "print", 
       { 
        "sExtends": "collection", 
        "sButtonText": 'Save <span class="caret" />', 
        "aButtons": ["csv", "xls", "pdf"] 
       } 
       ] 
      }, 

      "aaData": data 
      })     
    } 
    }); 
} 

JQuery와 방법에 대한 문서는 당신을 Default.aspx/MsgDateDetail 콘텐츠 유형에 대한 응용 프로그램/JSON을 반환하는지 확인 작업이 들어 jquery.com http://api.jquery.com/jQuery.isArray/

에 있습니다. 다음을 수행 영문 파일에서이 작업을 수행하려면 : 당신은 당신이 할 수 적어도 후 일부 유효 하나를 게시 한 작은 코드로 어떤을 Response.Write에게

+0

모에,이게 내가 가지고있는 논리입니다. 그러나이 레코드는 네드 사용자에게 레코드를 읽지 않는 데이터 열을 표시하지 않습니다. 그것은 요청 이전에 동일한 정보를 제시합니다 – CSharpNewBee

+1

@CSharpNewBee 코드를 게시하십시오. 업데이트 전에 데이터 테이블을 지우지 않을 가능성이 높습니다. 그러나 구별을 위해 해당 코드를 볼 필요가 있습니다. – nerdybeardo

+0

위를 참조하십시오. 오른쪽 – CSharpNewBee

0

if(msg.d.length !=0) { // Try this 
    //-- build the table 
} 
+0

오타되었습니다. 그러나 JSON 문자열을 전달하고 구문 분석 할 때 emmpty 문자열을 확인해야합니다. – CSharpNewBee

+0

@CSharpNewBee 왜 json으로 아약스 요청의 dataType을 설정하지 않습니까 ??? 서버가 반환 한 json이 유효하지 않으면 오류 콜백이 발생합니다. –

+0

'empty string === (string.length = 0)'right? – Praveen

관련 문제