Javascript 为什么从Django视图函数返回HttpResponse时会出现错误?
我试图通过Ajax从JavaScript代码调用Django视图函数。View函数返回我试图在控制台上打印的HttpResponse 但是控制台上显示的是'undefined',我在python终端上得到一个错误,它说:'AttributeError:'NoneType'对象没有属性'split' 查看功能是:Javascript 为什么从Django视图函数返回HttpResponse时会出现错误?,javascript,python,ajax,django,python-3.x,Javascript,Python,Ajax,Django,Python 3.x,我试图通过Ajax从JavaScript代码调用Django视图函数。View函数返回我试图在控制台上打印的HttpResponse 但是控制台上显示的是'undefined',我在python终端上得到一个错误,它说:'AttributeError:'NoneType'对象没有属性'split' 查看功能是: @csrf_exempt def result(request): if(request == 'POST'): # datafromclient =
@csrf_exempt
def result(request):
if(request == 'POST'):
# datafromclient = request.form['mydata']
# finalRes = runAreaReview(datafromclient)
test = 'testing'
return HttpResponse(test)
Html代码是这样的:
<div align="center" class="input-line">
<form class="input-form" method="post">{% csrf_token %}
<input type = "text" id = "ans" class = "form-control" name = "address" placeholder="Type postcode..."><br><br>
<button id = "homeBtn" class="btn btn-primary">Find info</button><br><br>
</form>
</div>
btn.addEventListener('click', function(){
var plcholder = document.getElementById('ans').placeholder;
var btnres = document.getElementById('ans').value;
if(btnres == '' || btnres == plcholder)
console.log('you failed');
else
console.log(btnres);
var result = callpy(btnres);
console.log(result);
});
function callpy(input){
var pyres = $.ajax({
type: "POST",
url:'/result',
data: { mydata: input }
});
return pyres.responseText;
我得到的错误是:
self.status.split(' ',1)[0], self.bytes_sent
AttributeError: 'NoneType' object has no attribute 'split'
注意:我研究了这个问题,Django的早期版本中有一个导致此错误的错误,但我有一个最新版本,我仍然收到此错误。代码失败,错误为200,因为您使用的是
if(request.method='POST'):
而不是if(request.method='POST')):
这会破坏输出。使用这个javascript,它应该可以工作
@csrf_exempt
def result(request):
if(request.method == 'POST'):
# datafromclient = request.form['mydata']
# finalRes = runAreaReview(datafromclient)
test = 'testing'
return HttpResponse(test)
function callpy(input){
$.ajax({
type: "POST",
url:'/result',
data: { mydata: input },
success: function(data) {
console.log(data);
},
error: function() {
// error handling here
},
});
}
请修复视图函数中的缩进。不,返回响应是Django真正做的主要事情:没有版本会意外地返回响应。错误的背景是什么?@DanielRoseman:关于缩进,我是从代码中复制粘贴的,有些东西弄乱了,但代码上的缩进是正确的。我仍然认为Django的早期版本抛出了相同的错误,在其后期版本中得到了修复。但是,这并不重要。你知道我为什么在这里出现这个错误吗?这些错误一定是来自
pyres.responseText
,因为我没有看到任何其他拆分发生。您能否打印console.log(pyres)
并查看响应是否有responseText
?缩进仍然不正确。if块里面是什么?