无法响应上下文处理器上的 AJAX 调用
Posted
技术标签:
【中文标题】无法响应上下文处理器上的 AJAX 调用【英文标题】:Can't respond to AJAX call on context processor 【发布时间】:2021-11-24 00:28:46 【问题描述】:我正在 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 请求并且响应没有问题,但这是我在上下文处理器中处理的唯一一个,所以我确定我缺少一些东西。
谢谢!
【问题讨论】:
显示请求处理的完整代码。 阅读***.com/help/minimal-reproducible-example。 应更新问题以包含所需行为、特定问题或错误以及重现问题所需的最短代码。 【参考方案1】:我最终在帮助下想通了。
上下文处理器通常只能用于模板上下文或模板渲染,因此响应应该是字典,而不是 json 类型(这就是错误的原因)。
我为这个 AJAX 请求创建了一个独立的视图,并在 AJAX 的前端指定了这个视图的 URL 以及它的工作方式。
【讨论】:
以上是关于无法响应上下文处理器上的 AJAX 调用的主要内容,如果未能解决你的问题,请参考以下文章
jQuery 自动将事件处理程序注册到通过 Ajax 响应添加到 DOM 的元素上的用户操作