问题摘要:
我做的方式看起来很笨拙。总结一下,我基本上试图将jquery结果传递给视图。然后,该视图将执行一个子进程,该子进程运行perl脚本,其值存储在jquery变量中。这个perl脚本生成html页面(实际上更新了显示的内容)。然后Django需要等待(如0.3s)然后刷新页面,直到perl脚本完成(并且存在新的html文件)。以下是我尝试这样做的尝试。但它无法正常工作。任何关于我能做什么的建议都将不胜感激!
我目前有一个查询数据库,填充一些下拉表,还运行perl脚本的视图。 perl脚本根据下拉菜单中选择的值生成html文件。然后,这将更新页面。对于所有这些,我使用PyCharm作为IDE。
在Internet Explorer 11上,该页面将大约更新1/5次。在PyCharm的调试控制台中,它将显示如下内容:
[30/Apr/2014 10:26:11] "GET /Pass_Rate_by_Platform/?resultValue=cd&modelValue=Ahmed_25 HTTP/1.1" 200 19886
[30/Apr/2014 10:26:11] "GET /Pass_Rate_by_Platform/ HTTP/1.1" 200 19886
当每个请求不起作用时。
当它发生时,PyCharm会显示:
[30/Apr/2014 11:01:52] "GET /Pass_Rate_by_Platform/ HTTP/1.1" 200 19902
[30/Apr/2014 11:01:52] "GET /Pass_Rate_by_Platform/?resultValue=liftforce&modelValue=Ahmed_20 HTTP/1.1" 200 19902
很明显,它有时会在不应该刷新页面时刷新页面。这显然是IE的问题。
在Firefox中,firebug告诉我,我发出的每个请求都是发送相同的类似Get数据。但是,这没有在PyCharm调试部分中显示。
以下是相关代码:
views.py
def platform_pass_rate(request):
db = MySQLdb.connect(user='a_user', db='secondary', passwd='something', host='ab-cd')
cursor = db.cursor()
cursor.execute('SELECT study FROM study ORDER BY study ASC')
study_model = [row for row in cursor.fetchall()]
cursor.execute(
'SELECT column_name FROM information_schema.columns where table_name =
\'finalvalues\' order by ordinal_position')
study_result = cursor.fetchall()
db.close()
study_models = [i for sub in study_model for i in sub]
study_results = [i for sub in study_result for i in sub]
if request.method == 'GET':
resultVar = request.GET.get('resultValue', 'cd')
modelVar = request.GET.get('modelValue', 'Ahmed_00')
subprocess.call(["perl", "static/static/perl/passRateByPlatform.pl", resultVar, modelVar])
# return HttpResponse(resultVar)
else:
subprocess.call(["perl", "static/static/perl/passRateByPlatform.pl", "liftforce", "Ahmed_25"])
current_url = get_full_path(request)
return render_to_response("data_form_platform.html", {'our_url': current_url,
'study_models': study_models,
'study_results': study_results})
base.html文件
<script type="text/javascript">
$(document).ready(function () {
{# $.ajaxSetup({ cache: false });#}
var current_url = $('#current_url').text();
var id = current_url.trim();
$('#' + id).addClass('active');
$('#platform_data_form_button').click(function () {
var selectedResultValue = $('#platform_type_of_result :selected').text();
console.log(selectedResultValue);
var selectedModelValue = $('#platform_models :selected').text();
console.log(selectedModelValue);
$('#platform_type_of_result').change(function () {
var selectedResultValue = $('#platform_type_of_result :selected').text();
console.log(selectedResultValue);
});
$('#platform_models').change(function () {
var selectedModelValue = $('#platform_models :selected').text();
console.log(selectedModelValue);
});
$.get("/Pass_Rate_by_Platform/", { resultValue: selectedResultValue, modelValue: selectedModelValue}, function (response) {
console.log("workinggggggg");
});
});
});
</script>
相关按钮:
<div class="col-md-1" style="margin-left: -20px" id="platform_data_form_button">
<a href="/Pass_Rate_by_Platform/" class="btn btn-primary btn-success"></span> Confirm</a>
</div>
答案 0 :(得分:0)
经过几个小时的寻找新解决方案后,我意识到尾随/
是阻止它工作的唯一因素。以下是更正的错误代码:
base.html
注意/
中缺少href="/Pass_Rate_by_Platform"
$(document).ready(function () {
{# $.ajaxSetup({ cache: false });#}
var current_url = $('#current_url').text();
var id = current_url.trim();
$('#' + id).addClass('active');
$('#platform_data_form_button').click(function () {
var selectedResultValue = $('#platform_type_of_result :selected').text();
console.log(selectedResultValue);
var selectedModelValue = $('#platform_models :selected').text();
console.log(selectedModelValue);
$('#platform_type_of_result').change(function () {
var selectedResultValue = $('#platform_type_of_result :selected').text();
console.log(selectedResultValue);
});
$('#platform_models').change(function () {
var selectedModelValue = $('#platform_models :selected').text();
console.log(selectedModelValue);
});
$.get("/Pass_Rate_by_Platform", { resultValue: selectedResultValue, modelValue: selectedModelValue}, function (response) {
console.log("workinggggggg");
});
});
});
</script>
相关按钮:
注意/
href="/Pass_Rate_by_Platform"
<div class="col-md-1" style="margin-left: -20px" id="platform_data_form_button">
<a href="/Pass_Rate_by_Platform" class="btn btn-primary btn-success"></span> Confirm</a>
</div>
最简单的错误可能是一个受伤的世界......希望没有其他人必须经历这场考验。