2012-01-25 3 views
0

교수님을위한 사이트를 만들고 있는데 코드를 반복하지 않으려 고합니다. 왜냐하면 내가 실패 할 것이기 때문입니다.이 Ajax 호출을 어떻게 전역 적으로 사용할 수 있도록 개선 할 수 있습니까?

코드를 반복적으로 반복 할 필요가 없도록 여러 위치에서 사용하려는 .getJson 호출이 있습니다.

function GetJSON() 
{ 
    var a = $.getJSON("/controller_name/action", null, function (z) {}) 
    .success(function (z) { 
       //Success Action 
    }) 
    .error(function (z) { 
       //Error Action 
    }) 
    .complete(function (z) { 
       //Complete Action 
    }); 
} 

나는 성공, 오류 및 완료 이벤트를 변수로 전달할 수 있지만이 방법은 매우 혼란 스러울 가능성이 있다고 생각했습니다. 이 기능을 설정하여 내 사이트 전체에 동일한 기능의 GetJSON이있을 필요는 없습니다.

+0

다른 함수에서'$ .getJSON' 함수를 래핑하는 것이 코드를 줄이는 방법을 알지 못합니다 ... 필요하면 각 인스턴스에서'$ .getJSON'을 호출하면됩니다. '$ .getJSON' 래퍼 함수는 실제'$ .getJSON' 함수에 인자를 전달할 수있을뿐입니다. 모든 AJAX 호출에 대해 실행해야하는 기능이 있으면 Global AJAX 이벤트를 사용하십시오. http://api.jquery.com/category/ajax/global-ajax-event-handlers/ – Jasper

+0

AJAX 호출에 제공된 다른 자료 나이 샘플 코드에서 생략 된 데이터가있는 경우이를 줄입니다. 이 함수를 여러 번 호출하면 코드 전체에서 URL의 중복도 제거됩니다. – Alnitak

+0

@some_bloody_fool 가능한 경우 필자가 작성하는 코드 (실제 코드는 교수에게 제출할 코드)를보고 싶습니다. – Jasper

답변

2

당신의 교수는 현재의 패러다임과 최신 인 경우에는 반환 해야a ($.getJSON의 반환 값).

IT는 연기 객체, 그리고 당신은 어떤 시간에 당신을하시기 바랍니다 핸들러를 첨부 할 수 있으며, 자신의 GetJSON() 함수 내에서 이러한 사항을 추가 할 필요가 없습니다.

당신은 당신이 항상이 일어나는 GetJSON() 함수 내에서 사람들을 넣어 고유 한 행동에 대한 외부 행 처리기를 사용하려면 일반적인 작업이있는 경우 : jQuery를 1.7은 더 이상 사용되지 것을

function GetJSON() 
{ 
    var a = $.getJSON("/controller_name/action", null, function (z) { 
     ... 
    }); 

    // bind functions that you always want to happen here 
    a.fail(function(z) { 
     console.log("something bad happened"); 
    }); 

    return a; 
} 

var d = GetJSON(); 

// bind additional functions here 
d.done(
    // Success Action 
}) 
.fail(function (z) { 
    // Error Action 
}) 
.always(function (z) { 
    // Complete Action 
}); 

.success, .error.complete을 사용하여 다른 Deferred 개체와의 일관성을 유지합니다.

+0

올바른 방향으로 나를 가리 키시겠습니까? z를 a로 대체 하시겠습니까? 그게 그냥 변수라고 생각해? –

+1

@some_bloody_fool 그것은'var a = $ .getJSON()'의'a'입니다; – PeeHaa

+0

@HoeHoeHoe 아 감사합니다. –

1

동일한 요청을하고 매번 동일한 요소를 업데이트하지 않는 한 실제로 코드를 반복하는 것은 아닙니다. 콜백과 요청 URL이 다를 때마다 실제로 '래퍼'를 쓸 필요가 없습니다.

내가 '기본'기능으로 보는 방식입니다. 예 : 예 : console.log(). 당신은 그것을 감싸는 함수를 작성하고 싶지 않습니까?

당신이 정말로 필요로하거나 원하는 경우, 모든 매개 변수/콜백을 함수에 전달해야합니다.

+1

역설적이게도, console.log() 주위에 래퍼가 있어야 필연적으로 발생하는 오류를 방지하고 console.log가 정의되지 않은 환경에서 모든 것을 깨뜨릴 수 있습니다. – Kzqai

관련 문제