2013-05-28 42 views
3

services.js我:的Django + AngularJS + AJAX POST =奇怪的QueryDict

return $resource('/item', {name: 'myname'}, { 
    make_POST: { 
     method: 'POST', 
    }, 
    make_GET: { 
     method: 'GET', 
    } 
}); 

views.py

@ajax_request 
def v_item(request): 
    if request.method == 'POST': 
     return {'success': request.POST['name']} 
    return {'success': request.GET['name']} 

當我做make_GET,一切都很好。但當我做make_POST我得到這個:

"Key 'name' not found in <QueryDict: {u'{}': [u'']}>" 

我該怎麼做錯了?

UPDATE: 想通了,那POST作品,如果我送PARAMS當我打電話make_POST

Item.make_POST({name: 'myname'}, function(response) { 
    $scope.success_POST = response.success; 
}); 

而且在views.py做這樣的把戲:

return {'success': json.loads(request.raw_post_data)['name']} 

但是爲什麼$resource的params沒有發送?

+0

什麼是@ajax_request裝飾? – Aldarund

+0

它檢查request.is_ajax()並將dict返回給json。它來自'django-annoying' lib – imkost

+0

當我用jQuery做同樣的事情時,POST工作,不認爲這個問題是在裝飾器 – imkost

回答

2

其因角度將系列化你要求爲JSON和JSON發送到服務器,而不是形式的編碼數據

+0

我試過'json.loads(request.POST)',它沒有幫助。正如你所看到的:''QueryDict:{u''}}>',所以角度根本不會發送任何數據 – imkost

+1

是的,你需要在發送請求時發送參數。在創建資源時傳遞的參數是一個url參數。看到文檔在這裏:http://docs.angularjs.org/api/ngResource.$resource – Aldarund

+0

哇,現在它使感覺。非常非常感謝你!我不知道如果沒有你的答案,我會花多少時間來解決問題 – imkost