2012-09-02 5 views
1

CoffeeScript와 jQuery를 사용하여 로컬 변수에 저장된 ajax 호출에서 데이터를 가져 와서 나머지 메소드에서 사용할 수있게했습니다. 기존 코드는 다음과 같습니다.CoffeeScript : 변수에 jQuery Ajax 호출의 데이터 저장

response = null 
$.ajax 
    url: '/polygons' 
    dataType: 'json' 
    success: (data, textStatus, jqHXR) -> 
    response = data 

console.log response 

이 코드를 사용하면 응답이 항상 null로 유지됩니다. 데이터 변수를 성공 함수에서 호출하는 메서드로 가져오고 싶지만 그 범위를 벗어날 수는 없습니다. 여기서 내가 뭘 잘못하고 있니?

답변

4

Ajax가 비동기이므로 console.log response을 호출하면 응답이 설정되지 않고 콜백 함수에서 응답을 사용합니다.

response = null 
$.ajax 
    url: '/polygons' 
    dataType: 'json' 
    success: (data, textStatus, jqHXR) -> 
    response = data 
    console.log response 

는 어떻게 AJAX 호출이 완료 될 때까지 스크립트가이 후 대기 확인 할, 그래서 널 응답 객체를 사용하여 진행되지 않습니다?

당신이

+0

좋아 아약스 옵션에서 false로 비동기 변경하여 Ajax 호출 동기를 만들 수 당신이하지 않으려면 그냥 콜백 함수에 모든 처리를해야하므로 방법 스크립트가 ajax 호출이 완료 될 때까지 기다렸다가 null 응답 객체를 사용하여 진행하지 않도록할까요? – Andrew

+2

콜백 함수에서 모든 처리를 수행해야합니다. 원하지 않으면 ajax 옵션에서 async를 false로 변경하여 ajax 호출을 동기식으로 만들 수 있습니다. – Musa

+0

'async : false'를 사용하면이 특정 상황에서 모든 것을 해결할 수 있습니다. 감사! – Andrew

관련 문제