我正在尝试向视图发出一个简单的ajax请求,但是对于给定的网址仍然存在“未找到”错误:
Not Found: /myapp/start_session/1/scan_ports/
"POST /myapp/start_session/1/scan_ports/ HTTP/1.1" 404 5711
JS
$(document).ready(function() {
$.ajax({
method: 'POST',
url: 'scan_ports/',
data: {'csrfmiddlewaretoken': '{{csrf_token}}'},
success: function (data) {
alert("OK!");
},
error: function (data) {
alert("NOT OK!");
}
});
});
网址
url(r'^scan_ports/$',views.ScanPorts,name='scan_ports'),
查看
@login_required
def ScanPorts(request):
user = request.user
if request.method == 'POST':
currentSetting = models.UserSetting.objects.filter(isCurrent=True)
if currentSetting.serialPort:
print("GOT IT!")
return HttpResponse('')
ajax请求设置不正确吗?
答案 0 :(得分:0)
假设您在“myapp”应用中,请替换:
method: 'POST',
url: 'scan_ports/',
为此:
method: 'POST',
url: '/myapp/scan_ports/',
答案 1 :(得分:0)
首先检查您的网址,您发布的网址不正确,因此找不到404错误。
尝试在您的JS中定义您的网址:{%url' scan_ports' %}将使用您在urls.py中提供的名称搜索您的网址
此外,这可能不是通过ajax提交表单的好方法。
你的JS应该是这样的:
$('.form-class-name').on('submit', function (e) {
e.preventDefault();
console.log("ajax is called");
$.ajax({
type: $(this).attr('method'),
url: "/url-name/",
data: $(this).serialize(),
dataType: 'json',
success: function(data) {
alert("success");
},
error: function(data) {
alert("Failure");
}
})
}
您的视图必须返回字典,因为ajax处理JSON格式。
像这样编辑您的视图:
if request.method == "POST":
currentSetting = models.UserSetting.objects.filter(isCurrent=True)
if currentSetting.serialPort:
print("GOT IT!")
a = {'data':'success'}
return HttpResponse(json.dumps(a))
这将返回ajax所需的字典。