Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么从Django视图函数返回HttpResponse时会出现错误?_Javascript_Python_Ajax_Django_Python 3.x - Fatal编程技术网

Javascript 为什么从Django视图函数返回HttpResponse时会出现错误?

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 =

我试图通过Ajax从JavaScript代码调用Django视图函数。View函数返回我试图在控制台上打印的HttpResponse

但是控制台上显示的是'undefined',我在python终端上得到一个错误,它说:'AttributeError:'NoneType'对象没有属性'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>
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块里面是什么?