我正在尝试实现一个简单的代码测试服务器。客户将在网页上提交他们的代码,我们将用两个测试用例运行它(可能需要几分钟),然后发布结果。该页面将包括一个提交表单和一个输出框。
我的问题是如何更新输出框。我正在寻找最简单的方法来实现输出框,以便我们可以在运行不同的测试用例时显示结果。
我尝试了谷歌搜索解决方案,例如socket.io,但是我的ajax、socket.io甚至js的经验非常有限,所以我正在寻找最简单的方法来做到这一点。
我正在尝试实现一个简单的代码测试服务器。客户将在网页上提交他们的代码,我们将用两个测试用例运行它(可能需要几分钟),然后发布结果。该页面将包括一个提交表单和一个输出框。
我的问题是如何更新输出框。我正在寻找最简单的方法来实现输出框,以便我们可以在运行不同的测试用例时显示结果。
我尝试了谷歌搜索解决方案,例如socket.io,但是我的ajax、socket.io甚至js的经验非常有限,所以我正在寻找最简单的方法来做到这一点。
url(r'^get_log/$', 'myapp.views.get_log', name='get_log'),
url(r'^submit/$', 'myapp.views.submit', name='submit'),
views.py
def submit(request):
## Handle POST
## Your code comes here
return render(request, 'submit.html', {})
def get_log_from_disk():
## Your code comes here
return "Test 1 OK; Test 2 OK"
def get_log(request):
results = get_log_from_disk()
return HttpResponse(results)
在 submit.html 中添加
<head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
[<div id="output_box"></div>]
<script>
$(document).ready(function() {
$.ajaxSetup({ cache: false }); // This part addresses an IE bug. without it, IE will only load the first number and will never refresh
var my_refresh = setInterval(function() {
$('#output_box').load('/get_log/');
}, 1000); // the "1000"
});
</script>
</body>
var ajaxForm = function() {
$.ajax({
type: 'POST',
contentType: 'application/json',
dataType: 'json',
url: '/path/to/django/controller',
// The data sent to the Django view in JSON format
data: JSON.stringify({
formField: $('#body').val()
}),
success: function (data) {
$('#output-box').html(data);
}
});
}
$('#form').on('submit', function (e) {
e.preventDefault();
ajaxForm();
});
import json
from django.http import HttpResponse
def ajax_view(request):
if request.method == 'POST':
request_data = json.load(request.raw_post_data)
# do something
response_data = {}
response_data['result'] = 'Failed'
response_data['message'] = 'Your test not ended well'
return HttpResponse(
json.dumps(response_data),
content_type='application/json'
)