2016-11-14 2 views
-1

을 작동합니다

function detailFormatter(index, row) { 
     var html = []; 
     $.each(row, function (key, value) { 
     if(key == 'id') 
     { 
      html.push(key); 
      $.get("function/conversation/message/"+value, function(data, status){ 
       html.push(data); 
       alert(data); 
      }); 


     } 

     }); 
     return html.join(''); 
    } 

html.push(key) 작품.

경고가 작동합니다.

그러나 두 번째 html.push(data)은 작동하지 않습니다.

무엇이 잘못 되었나요?

+0

"작동하지 않음"은 무엇을 의미합니까? 콘솔에 오류가 있습니까? 그렇다면 게시 할 수 있습니까? 입력 데이터를 제공 할 수 있습니까? – secelite

+0

@secelite 콘솔에 오류가 없습니다. html.push는 $ .get 전후에 작동합니다. 또한 $ .get : html.push ('test')에서 이와 같은 것을 테스트합니다 ... 작동하지 않습니다. – sidna

답변

1

당신의 주된 문제는 $ .get이 비동기 작업이라고 생각합니다. 그래서 결과가 html.join (''); 그 때 작업이 끝나지 않았기 때문에 예상하지 못한 것이 놀랄 일이 아닙니다.

+0

어떻게 해결할 수 있습니까? '$ .get ("function/conversation/message"함수 (데이터, 상태)) { html.push (data); return html.join (''); }); ' – sidna

+0

올바른 것입니다. 대답. 'async' 옵션을'false'로 설정하십시오. [API 문서] (https://api.jquery.com/jquery.get/#jQuery-get-settings)를 참조하십시오. – secelite

+0

이 문제에 대한 여러 가지 해결책이 있습니다. 1. 비동기가 아닌 동기화가 이루어집니다. 2. 약속 사용 3. 비동기 작업의 값을 저장소/요소에 저장하고 모든 작업이 완료되면 이벤트를 생성합니다. – xszaboj