【发布时间】:2020-06-17 14:57:16
【问题描述】:
这里有很多类似的问题,但我无法解决我遇到的问题。理论上情况很简单 - 我将 json 发送到 Django 视图,我得到一个 json 响应。我用 python、Django 和 REST 框架完成了它。但是对于 Ajax,我无法做到这一点,URLconf 和 ajax 的相对 url 有一些东西,我不知道出了什么问题以及如何使它工作。我的意思是使用一些 URL confs,我可以使用我的 chrome 插件发送请求,并且我有我需要的响应,但是 ajax 使用该 confs 得到 404。如果我改变它,Django 开始返回我的 html 页面而不是 json 响应。我在这里想念什么? 我的ajax请求:
$.ajax({
url: 'ajax/apply_city/',
type: 'GET',
data: {
'city': obj.textContent
},
dataType: 'json',
success: function(data) {
var str = '';
data.districts.forEach(function (district) {
str += '<a class="dropdown-item" href="#" onclick="applyDistrict(this)">' + district + '</a>';
});
window.alert(str);
document.getElementById("district_dropdown").innerHTML = str;
},
});
适用于所有请求但不适用于 ajax 的 URL:
re_path('^index/$', views.index, name='index'),
re_path('^index/ajax/apply_city/', views.apply_city, name='apply_city'),
当 ajax 发出请求时,日志显示 Not Found: /index/... 和 GET /index/... 404。我已经看到,对于 ajax,我不应该使用 $ 符号关闭 url。如果我这样做 ^index/ 我会得到 HTML 页面作为响应(但使用 HTTP200)。也许这是一些 Django 问题,或者我不明白如何正确地做到这一点。如果有人知道如何解决它,请帮助。
【问题讨论】:
-
似乎 URL
ajax/apply_city/不是绝对 URL。您可能需要提供绝对网址,/index/ajax/apply_city/ -
@ArakkalAbu 我试过了,结果是一样的 404
-
你能通过浏览器的Netwotk部分检查ajax请求实际使用的url吗?
-
@ArakkalAbu 天哪,我真蠢!我使用了没有 ajax 功能的引导程序版本的 jQuery。感谢您告诉我在哪里查找错误!