我正在用django和django_rest_framework構建一個網站。 我用httpie測試了其餘的api。jQuery獲取json主體請求到REST api
但是,當我嘗試使用jQuery執行相同的調用時出現錯誤。
jquery.min.js:4 GET http://localhost:8000/api/recentposts/?{%22last_id%22:1650} 500 (Internal Server Error)
與httpie的調用如下
http get localhost:8000/api/recentposts/ last_id=1650
或
http get localhost:8000/api/recentposts/ < recent.json
----------------------------
content of recent.json
{
"last_id": 1650
}
,我得到正確的結果。
而使用jQuery我試圖
$.ajax({
type: 'GET',
url: 'http://localhost:8000/api/recentposts/',
contentType: 'application/json',
dataType: 'json',
processData: false,
data: JSON.stringify({ last_id : 1650 }),
success: function(resp){
console.log(resp);
}
});
有什麼錯的電話嗎? 我試過用.get代替.ajax,還有很多不同的方法來傳遞json,但我還沒有解決任何問題。
通過這種方式是被稱爲
class RecentPostViewSet(viewsets.ReadOnlyModelViewSet):
'''
ViewSet that displays recent posts after it post id
It needs a JSON file like the following
{
"last_id" : int
}
'''
queryset = Post.objects.all()
serializer_class = PostSerializer
def list(self, request):
recent_feed = Post.objects.filter(hidden=False).order_by('-pub_date').filter(pk__gt=request.data['last_id'])
log.warning("incoming request")
log.warning(dir(request))
log.warning(request.data)
log.warning(request.query_params)
serializer = self.get_serializer(recent_feed, many=True)
return Response(serializer.data)
認爲這是東陽的jQuery得到調用不能夠做一個json體的GET請求?或者我出錯了? 順便說一下,我使用jQuery 3.1.1
如果去掉'contentType'和'processData'選項,只是做會發生什麼'數據:{last_id:1650}' – adeneo
一個GET沒有主體。 ..它只使用網址。因此,沒有'contentType' – charlietfl
仍然有相同的結果。 – WisdomPill