2012-06-08 3 views
0

작동하지 : 내가 지금처럼이 기능을 변경 한DataTables> 아약스 내가이 기능을 복제하는 것을 시도하고있다

/* Formating function for row details */ 
function fnFormatDetails (oTable, nTr) 
{ 
    var aData = oTable.fnGetData(nTr); 
    var sOut = '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'; 
    sOut += '<tr><td>Rendering engine:</td><td>'+aData[1]+' '+aData[4]+'</td></tr>'; 
    sOut += '<tr><td>Link to source:</td><td>Could provide a link here</td></tr>'; 
    sOut += '<tr><td>Extra info:</td><td>And any further details here (images etc)</td></tr>'; 
    sOut += '</table>'; 

    return sOut; 
} 

:

/* Formating function for row details */ 
function fnFormatDetails(oTable, nTr) { 
    var aData = oTable.fnGetData(nTr); 
    var sOut = jQuery.ajax({ 
     url: "ajax/order_history_orderlines.asp", 
     type: 'post', 
     data: { orderid: aData[1] }, 
     context: document.body 
    }); 

    return sOut; 
} 
http://datatables.net/release-datatables/examples/api/row_details.html

의 예는이 기능을 제공합니다

FireBug를 통해 디버깅 할 때, 나는 ajax 응답이 모든 것을 올바르게 수행하는 것을 본다. 요청이 이루어지면 성공하고 올바른 정보가 반환됩니다. 여기에 반환되는 내용이다 : 나는 [+] 버튼을 클릭하면

<!-- Teplate for orderlines found in rs Record Set --> 
<table cellpadding="5" cellspacing="0" border="0" style="padding-left: 50px;"> 

    <tr> 
     <td> 
      Quantity: 
     </td> 
     <td> 
      1 
     </td> 
     <td> 
      Description: 
     </td> 
     <td> 
      48 Cans of drink 
     </td> 

     </tr> 

</table> 

그러나 그것은 행을 확장하지만 '세부 정보'행은 아약스 요청에서 반환 된 테이블과 업데이트되지 없구요.

예제에서 모두를 사용하면 sOut = <table> 등이 작동합니다. 내가 아약스 요청을 잡기 위해 그것을 바꿀 때, 그것은 0 에러로 작업하는 것을 멈춘다.

내가 여기에없는 것을 누구든지 볼 수 있습니까? 여기

+0

아약스 쿼리의 결과를 어디에서 가져오고 있습니까? – jeschafe

+0

@jeschafe 나는 그 (것)들을두기의 어떤 부분에 대해 당신이 묻고 있는지 잘 모르겠습니다. DataTables 예제에서는 함수가 sOut을 반환합니다.이 sOut은 sOut의 반환 값으로''를 채우기로되어 있습니다. Ajax 요청에 대한 응답이 현재 위의 내용인지 확인하려면 '

+0

맞아, 필자는 @Erik 필립스가 아래에 만들었다는 점에 착수했다. 위의 첫 번째 함수에서는 html로 삽입 할 문자열 리터럴을 설정하는 것입니다. 아약스 할 때 같은 형식이어야하지만 실제 아약스 개체가 아닌 콜백에 반환 된 데이터를 삽입합니다. – jeschafe

답변

1

코드는 올바르지 않습니다

var sOut = jQuery.ajax({ 
    url: "ajax/order_history_orderlines.asp", 
    type: 'post', 
    data: { orderid: aData[1] }, 
    context: document.body 
}); 

jQuery.ajax()

그것이 jqXHR 개체를 반환 데이터를 반환하지 않습니다. 성공적인 Ajax 호출에 데이터를 채우려면 success 콜백 기능을 사용해야합니다.

var sOut = jQuery.ajax({ 
    url: "ajax/order_history_orderlines.asp", 
    type: 'post', 
    data: { orderid: aData[1] }, 
    context: document.body, 
    success: function(data, textStatus, jqXHR) 
    { 
     // do something with data(json object returned by call) 
    } 
}); 
+0

반환 된 데이터가 문자열이 아닐 수도 있습니다. 심지어 시도했다 .ToString(); 그것을 [object, object]로 채웠다. 나는 Jquery, 새로운 브랜드가 아닌 새로운 초보자입니다. 데이터를 테이블 구조로 분해하는 방법을 이해할 수있는 페이지 참조 또는 초기 시작 코드가 있습니까? 'sOut'은 원래 게시물의 위 표와 유사해야하기 때문에. Ajax 응답에서 데이터를 꺼내 테이블로 가져 오는 과정을 시작하는 방법을 모르겠습니다. –

+0

그래서 놀아 라. 나는'sOut'를'oAjaxData'로 바꿨고'sOut'를'success :'안에'sOut = data.toString();로 설정했습니다. 매우 이상한 것은 무엇입니까. 페이지를로드하면 같은 일이 빈 행을 반환합니다. 그러나 FireBug를 사용하여 단계별로 실행하면 행이 올바르게 채워집니다.이 동작으로 혼란스럽게 여기에서 잘못하고있는 것은 무엇입니까? –

+0

답변을 수락 했으므로 필요에 따라 작동합니까? –

관련 문제