前端增加javascript代码后为什么不再响应后台HttpRespond了?
最近在做一个项目,需求是前端上传一个表格,后端处理后将结果返回给前端。为了提示表格上传进度,我找了网上的代码,如下:
<script> function on_upload(evt){ if(evt.lengthComputable){ var ele = document.getElementById('prog_bar'); var percent = Math.round((evt.loaded)*100/evt.total); ele.setAttribute('aria-valuenow',percent.toString()); ele.style.width = percent + '%' ele.innerHTML = percent + '%' } } function a(){ if($('#file_input').val()!=''){ $('#upload_text').text('uploading...'); var table = document.getElementsByTagName('input')[1].files[0] var fd = new FormData(); var xhr = new XMLHttpRequest(); xhr.open('post','/frags/upload_table/',true); fd.append('csv',table); fd.append('csrfmiddlewaretoken','{{ csrf_token }}') xhr.send(fd); } } $(document).ready(function(){ $("#sub_btn").click(a); }); </script>
后端的代码大概就是:
def upload_table (request): if request.method == 'POST': #处理表格 return HttpResponse('success') else: return render(request,'前端页面')
现在发现后台处理结束返回后,前端的页面没有变化,好像没有接受到后台返回的httpResponse一样。但是如果把前端的javascript内容删除以后就正常了。是我的javascript写的有问题么?
评论 1
我自己解决了,在xhr.onreadstatechange中指定处理后端返回函数,里面写document.write(xhr.httpresponse)就好