【发布时间】:2017-04-06 18:11:03
【问题描述】:
我正在尝试通过 Ajax 从 JavaScript 代码调用 Django View 函数。 View 函数返回一个 HttpResponse 我试图在控制台上打印出来。
但在控制台上显示 'undefined',我在 python 终端上收到错误消息:'AttributeError: 'NoneType' object has no attribute 'split'
查看功能是这样的:
@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>
JavaScript 代码是这样的:
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 有一个错误导致这个错误,但我有一个最新的版本,我仍然得到这个错误。 p>
【问题讨论】:
-
请修复视图函数中的缩进。不,返回响应实际上是 Django 所做的主要事情:没有任何版本意外返回 None。
-
错误的上下文是什么?
-
@DanielRoseman :关于缩进,我从我的代码中复制粘贴它,有些东西搞砸了,但我的代码上的缩进是正确的。而且我仍然认为早期版本的 Django 引发了同样的错误,该错误已在其更高版本中修复。不过,这里没关系。你知道为什么我会在这里收到这个错误吗?
-
错误必须来自
pyres.responseText,因为我没有看到任何其他分裂发生。你能打印console.log(pyres)看看回复有没有responseText吗? -
缩进仍然不正确。 if 块里面是什么?
标签: javascript python ajax django python-3.x