2012-10-25 13 views
8

Tworzę interfejs API z Tastypie i chcę uzyskać dostęp do interfejsu API z Szkieletu. Aby wysłać referencje, używam user_id i api_key. Robię to w Androidzie i z curl i ta praca jest świetna, ale mogę ustawić nagłówek http z kręgosłupa.Umieszczanie niestandardowego nagłówka http w szkielecie

W zwinięcie używam:

curl --dump-header - -H "Accept: application/json" -H "Content-Type: application/json" -H "user_id: 32" -H "api_key: 69950" -X DELETE "http://127.0.0.1:8000/api/v1/deletenote/66/?format=json" 

w android java używam:

HttpDelete requestDELETE = new HttpDelete(); 
    requestDELETE.setHeader("Content-type", "application/json"); 
    requestDELETE.setHeader("Accept", "application/json"); 
    requestDELETE.setHeader(Constants.HEADER_USER_ID, user_id); 
    requestDELETE.addHeader(Constants.HEADER_API_KEY, key); 

Obaj działają świetnie, ale gdy próbuję to w Backbone następujące reakcje, które znalazłem w inny wpis ze strony, to nie zadziałało.

próbuję to:

var removeNote = new DeleteNoteModel({id:this.model.toJSON().id},{ query:this.model.toJSON().id}); 


removeNote.destroy({ 
     headers: {'user_id':dataWeb.get("id"),'api_key':dataWeb.get("api_key")} 
     },{ 
        async:false, 
        error: function(model, response){ 
         console.log("KO_REMOVE_NOTE"); 
         console.log(response); 
        }, 
        success : function(model, response){ 
         console.log("OK_REMOVE_NOTE"); 
         console.log(response); 
        } 
       } 
    ); 

Kładę nagłówek gdy zgłoszę na wezwanie zniszczyć, ale nie wysyłaj anithing do serwera.

Co robię w niewłaściwym trybie?

Dziękuję wszystkim.

Odpowiedz

19

Tallmaris odpowiedź powinna naprawić to dla ciebie choć polecam usign jQuery ajaxSetup metodę konfiguracji nagłówki jako wartości domyślnych dla wszystkich żądań ajax jak wierzę, trzeba je cały czas i tak dobrze?

Gdzieś gdzie można uruchomić aplikację umieścić w

$.ajaxSetup({ 
    headers: { 
     'user_id':dataWeb.get("id"), 
     'api_key':dataWeb.get("api_key") 
    } 
}); 

Dzięki temu zaoszczędzisz sobie sporo powtarzającego się kodu :) zachować DRY!

(oczywiście trzeba by upewnić się, że dataWeb jest dostępny w zakresie gdzie uruchomić aplikację :))

+0

Dzięki! To jest praca! W końcu mogę usunąć notatkę! Parametry ajax poprawnie wstawiają nagłówek. Umieszczenie nagłówka w metodzie szkieletowej nie działa dla mnie. –

+0

Miło słyszeć, że Juanma! –

+0

Bardzo pomocne, dzięki. –

3

Wygląda na to, że przekazujesz dwa parametry do zniszczenia, przekazujesz tylko jeden zawierający nagłówki i pozostałe opcje razem, chyba że kolejność nawiasów jest literówka. Spróbuj tego:

removeNote.destroy({ 
    headers: { 
     'user_id':dataWeb.get("id"), 
     'api_key':dataWeb.get("api_key") 
    }, // there was an extra close-open curly here... 
    async:false, 
    error: function(model, response){ 
     console.log("KO_REMOVE_NOTE"); 
     console.log(response); 
    }, 
    success : function(model, response){ 
     console.log("OK_REMOVE_NOTE"); 
     console.log(response); 
    } 
}); 
+0

Używanie parametrów Ajax działać dobrze dla mnie. Próbuję to, ale to nie jest problem. Dziękuję za odpowiedź. –

Powiązane problemy