0

現在、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 が表示されます

注:ハリスの回答から、問題を解決できましたが、なぜそれが機能するのか知りたいです

私が使うとき

$.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']
4

1 に答える 1

1

$.POST リクエストを jquery で送信していますが、タイプを GET に変更しようとしています。ajax リクエストにカスタム オプションを追加する場合は、.ajax を使用します。

于 2013-07-26T08:53:21.020 に答える