簡體   English   中英

無法響應上下文處理器上的 AJAX 調用

[英]Can't respond to AJAX call on context processor

我正在 DJANGO 上開發一個網站,我遇到了一個問題:

我的網站上有一個按鈕,觸發后會發送 AJAX POST 請求。 由於此按鈕位於我網站的多個位置,因此我決定在后端的上下文處理器文件上接收 AJAX 請求。

這是前端中的請求的樣子:

$.ajax({
    method: 'POST',
    headers: {'X-CSRFToken': csrftoken},
    data: {
        "requested_item": requested_item
    },
    dataType: "json",
    success: function() {
      // Handle success
    }
  });

這就是后端請求處理的樣子:

requested_item = request.POST.get('requested_item')
    if requested_item != None:
      # Handle valid request
      return JsonResponse({'success': True})

問題是, return JsonResponse({'success': True})不工作,它拋出這個錯誤:

File "*path*\virtual-env\lib\site-packages\django\template\context.py", line 244, in bind_template
    updates.update(processor(self.request))
ValueError: dictionary update sequence element #0 has length 17; 2 is required

數據從前端到后端毫無問題地到達,但我似乎無法響應。

我在我的后端以相同的方式處理多個 AJAX 請求並且響應沒有問題,但這是我在上下文處理器中處理的唯一一個,所以我確定我缺少一些東西。

謝謝!

我最終在幫助下弄明白了。

上下文處理器一般只能用於模板上下文或模板渲染,因此響應應該是字典,而不是 json 類型的字典(這就是錯誤所在)。

我為此 AJAX 請求創建了一個獨立視圖,並在 AJAX 的前端指定了該視圖的 URL 及其工作方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM