我的django遇到了很大的问题。我只想在文档准备就绪时调用一个视图,并将值传递回js及其alert函数: 我已经阅读了很多这里的堆栈解决方案,一些文章,jquery文档,实现了很多样本 - 没有用。
<script type="text/javascript">
$(document).ready(function() {
$.get("/resultlive/", function(response) {
//$( ".loading-progress-6" ).css( 'width: ' response );
alert(response);
});
});
</script>
,结果视图是:
def resultlive(request):
task = Task.objects.get(id=1)
data= task.done
json_data = json.dumps(data)
return HttpResponse(json_data, mimetype='application/json')
工作进度很简单(仅限):
{{percentageDone}}
on localhost / resultlive我得到了正确的结果 但整个模板页面控制台说:错误500内部服务器错误与jquery.extend
我需要做什么?我需要自动刷新任务完成值并更改进度条的宽度而不刷新网页
我花了5个小时没有任何工作,请为jquery非常新手提供一些建议
修改
好的,我已经专门做了一个新的Sample项目来测试响应,我有func的视图:
def ajax(request):
pcs = Workstation.objects.get(id=1)
response_data = {}
try:
response_data['result'] = 'Success'
response_data['message'] = list(pcs)
except:
response_data['result'] = 'Fail'
response_data['message'] = 'fail'
return HttpResponse(json.dumps(response_data), content_type="application/json")
和href点击后调用JavaScript:
<script type = 'text/javascript'>
function FireScript(){
$.ajax({type:'GET', url: '/ajax/', datatype: 'json', async: true, data: {},
success: function(json) {alert(json.message);}
});
}
</script>
它确实运作良好,但当我改变视野时:
response_data ['message'] = list(pcs)
变成:
response_data ['message'] = pcs.processes_done
控制台抛出错误500,为什么? 在Python上它运作得很好。
EDIT2:
这一个人只检索一行(正如预期的那样),并使用AJAX返回两个vars进行查看,gosh ......最后
def ajax(request):
pcs = Workstation.objects.get(id=1)
response_data = {}
try:
response_data['result'] = 'Success'
response_data['message'] = str(pcs.processes_made)
#serializers.serialize("json", pcs) for more objects
except:
response_data['result'] = 'Fail'
response_data['message'] = 'fail'
return HttpResponse(json.dumps(response_data), content_type="application/json")
答案 0 :(得分:0)
在AJAX视图中试试这个:
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def ajax(request):
pcs = Workstation.objects.get(id=1)
response_data = {}
try:
response_data['result'] = 'Success'
response_data['message'] = list(pcs)
except:
response_data['result'] = 'Fail'
response_data['message'] = 'fail'
return HttpResponse(json.dumps(response_data), content_type="application/json")
我添加的唯一更改是@csrf_exempt
并导入csrf_exempt from django.views.decorators.csrf import csrf_exempt
您可以查看Django Cross Site Protection。 Django是关于跨站点保护和csrf令牌的文档。