2017-11-03 1 views
1

URL에 매우 유사한 두 개의 ajax 요청이 있지만 여러 지점에서 응답을 통해 다른 작업을 수행해야합니다. 내가 필요할 때마다이 함수를 호출하기에 계획하고, 그래서 지금동일한 AJAX 호출을 재사용하십시오.

function createAjaxObj(type,name,id,successFunc){ 
    var config = { 
     url: MY_URL, 
     type: type, 
     data: { 
      name : name, 
      id : id, 
     }, 
     headers: { "X-CSRFToken": returnCsrfToken(); }, 
     success: successFunc, 
     error: function(xhr,ajaxOptions, thrownError) { console.log('error=',xhr);}, 
    }; 
    $.ajax(config); 
} 

: 그래서 그 대신 새로운 Ajax 호출 내가 필요할 때마다 쓰고, 나는 매개 변수와 함수로 아약스 전화를 다시 사용하려고 그런 :이 좋은 아이디어 나 관행 또는 이것을 달성하는 쉬운 방법이 있는지

var myFunc = function(context){console.log(context)} 
createAjaxObj("GET","MyName",58,myFunc) 

궁금 해서요?

답변

1

나는 약속의 방법으로 그것을 할 것 :

function myAjax(type, name, id) { 
    return $.ajax({ 
     url: MY_URL, 
     type: type, 
     data: { 
     name : name, 
     id : id, 
     }, 
     headers: { "X-CSRFToken": returnCsrfToken(); }) 
    }) 
    .fail(function(){ 
     console.log('error'); 
    }); 
    } 

    var myFunc = function(context){ console.log(context); }; 
    myAjax("GET", "MyName", 58).then(myFunc); 
1

당신이 응답 변화에 무슨 일을하는지 당신은, 그것을 약속 할 수 있습니다 : 지금

function createAjaxObj(type,name,id,successFunc){ 
    return $.ajax({ 
    url: MY_URL, 
    type: type, 
    data: { 
     name: name, 
     id: id 
    } 
    }) 
} 

당신과 같이 실행할 수 있습니다 :

createAjaxObj('foo', 'bar', 1) 
    .then(function(data) { // do something with data }) 
    .error(function(err) { // do something with error }) 

나는 그것이 작동해야한다고 생각 당신. 나에게 알려주지 않으면, 나는 그것을 위해 바이올린을 만들 것이다.

관련 문제