使用Tastypie api的jquery get方法的401 UNAUTHORIZED错误

时间:2013-07-26 05:51:50

标签: php jquery ajax django tastypie

截至目前,我没有对Tastypie使用身份验证,但是当我在浏览器中访问url时,我能够看到内容。

http://localhost:8000/live/api/update/?format=json

但我试图通过jquery ajax调用

在页面中获取此数据
$.post('/live/api/update/?format=json',
            {type:'GET',dataType: "json", processData:  false,
  contentType: "application/json",userid:$('#index').val()},function(devicelist){       
    .....       
    }

在浏览器firebug控制台中,我看到了401

注意:从Haris的答案中,我能够解决问题,但我想知道它为什么会起作用

当我使用

$.ajax({ type: "POST", url: url, data: data, success: success, dataType: dataType });

它正在工作(状态:202),而当我使用

  $.post('/live/api/update/?format=json',
                {type:'GET',dataType: "json", processData:  false,
      contentType: "application/json",userid:$('#index').val()},function(devicelist){       
        .....       
        }

这不起作用。实际上我将我的PHP代码转移到Django,当我使用PHP上面的代码用于处理401错误

tastypie api代码中没有身份验证

api.py

from tastypie.resources import ModelResource
from models import Update
from tastypie.serializers import Serializer
import urlparse

class urlencodeSerializer(Serializer):
    formats = ['json', 'jsonp', 'xml', 'yaml', 'html', 'plist', 'urlencode']
    ....


class UpdateResource(ModelResource):
    class Meta : 

        queryset = Update.objects.all()
        resource_name = 'update'
        filtering = {'imei' : ALL }
        #authentication = DjangoCookieBasicAuthentication()
        serializer = urlencodeSerializer() # IMPORTANT 
        allowed_methods = ['get','post']

1 个答案:

答案 0 :(得分:1)

您正在使用jquery发送$ .POST请求,但您正在尝试将类型更改为GET。如果要向ajax请求添加自定义选项,请使用.ajax。