2017-04-06 16 views
0

我想通过Ajax从JavaScript代码调用Django View函数。查看功能返回HttpResponse,我试图在控制台上打印出来。为什么我试图从Django View函数返回HttpResponse时出错?

但控制台上显示“未定义”和我说的蟒蛇终端上的错误:“AttributeError的:‘NoneType’对象有没有属性‘分裂’

View功能是此:

@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的以前的版本有它导致这个错误的错误,但我有一个版本是最新的,我仍然得到这个错误。

+0

请修复您的视图函数中的缩进。不,返回响应实际上是Django所做的主要事情:没有任何版本意外返回None。 –

+0

错误的上下文是什么? – spectras

+0

@DanielRoseman:关于缩进,我是从我的代码中复制粘贴的,有些东西搞砸了,但是我的代码的缩进是正确的。 而且我仍然认为Django的早期版本抛出了这个相同的错误,这个错误在其后来的版本中已经修复。但是,这里没关系。 你有什么想法,为什么我在这里得到这个错误? –

回答

0

该代码失败,因为您使用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 
     }, 
    }); 
} 
相关问题