我已经在DRF中成功地实现了对PUT
的AJAX请求一切正常,但AJAX中的错误回调被触发:
drf部分:
class ProductDataViewSet(viewsets.ViewSet):
authentication_classes = [SessionAuthentication,]
permission_classes = [IsAuthenticated,]
serializer_class = ProductSerializer
def put(self, request):
...
return Response(data = "OK", status = status.HTTP_200_OK)
AJAX部分:
let write2db = function ( data ) {
let csrf_token = $('[name="csrfmiddlewaretoken"]').attr('value');
$.ajax({ url: "api/products/",
type: "PUT",
data: JSON.stringify(data),
dataType: "string",
headers: { 'X-CSRFTOKEN': csrf_token,
"Content-type": "application/json" },
success: function (request, status, error) {
console.log(request, "--", status, "---", error)
window.location = "/pe/?message=success&status=success";
},
error: function ( request, status, error ) {
window.location = `/pe/?message=${error} - ${request.responseText}&status=danger`;
}
});
};
使用此JSON:时
data = {'number': '2', 'data': {'name': 'brand new', 'price': '2.4'}}
在控制台中我得到:
"得到/pe/?message=没有%20从%20文本%20到%20字符串%20的%20转换%20产品%20更新%22&status=危险HTTP/1.1";200 8188
short:
没有从文本到字符串的转换。
dataType: "string"
,但您返回的是JSON。dataType
指的是您想要的响应格式。您的错误看起来可能被响应格式捕获。
尝试设置dataType: 'json'