加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl的CGI与Ajax(Extjs)交互

发布时间:2020-12-16 00:13:15 所属栏目:大数据 来源:网络整理
导读:往perl后台提交数据Extjs 按钮代码如下:bbar:['-',{text:'save',width:50,handler:function(){Ext.getCmp("panel1").getEl().mask("Saving data...","x-mask-loading");var month = Ext.util.Format.date(Ext.getCmp("month").getValue(),'Y-m');Ext.Ajax.r
往perl后台提交数据
Extjs 按钮代码如下:
bbar:['->',{	text:'save',width:50,handler:function(){
						Ext.getCmp("panel1").getEl().mask("Saving data...","x-mask-loading");
						var month = Ext.util.Format.date(Ext.getCmp("month").getValue(),'Y-m');
						Ext.Ajax.request({
						    url: "qam_basicdata_post.cgi?project_id=[% project_id %]&type=effort&month="+month+"-00",params:{  
	                       
	                       //save review
	                       nq_inspection_peer_review_requirement : store_review.findRecord("key","nq_inspection_peer_review_requirement").get("value"),nc_inspection_peer_review_requirement : store_review.findRecord("key","nc_inspection_peer_review_requirement").get("value"),nq_walkthrough_peer_review_requirement : store_review.findRecord("key","nq_walkthrough_peer_review_requirement").get("value"),nc_walkthrough_peer_review_requirement : store_review.findRecord("key","nc_walkthrough_peer_review_requirement").get("value"),total_peer_review_prepartion_effort_requirement : store_review.findRecord("key","total_peer_review_prepartion_effort_requirement").get("value"),total_peer_review_meeting_effort_requirement : store_review.findRecord("key","total_peer_review_meeting_effort_requirement").get("value"),total_peer_review_effort_requirement : store_review.findRecord("key","total_peer_review_effort_requirement").get("value"),nc_inspection_peer_review_design_document : store_review.findRecord("key","nc_inspection_peer_review_design_document").get("value"),nc_walkthrough_peer_review_design_document : store_review.findRecord("key","nc_walkthrough_peer_review_design_document").get("value"),total_peer_review_prepartion_effort_design_document : store_review.findRecord("key","total_peer_review_prepartion_effort_design_document").get("value"),total_peer_review_meeting_effort_design_document : store_review.findRecord("key","total_peer_review_meeting_effort_design_document").get("value"),total_peer_review_effort_design_document : store_review.findRecord("key","total_peer_review_effort_design_document").get("value"),nc_inspection_peer_review_test_design : store_review.findRecord("key","nc_inspection_peer_review_test_design").get("value"),nc_walkthrough_peer_review_test_design : store_review.findRecord("key","nc_walkthrough_peer_review_test_design").get("value"),total_peer_review_prepartion_effort_test_design : store_review.findRecord("key","total_peer_review_prepartion_effort_test_design").get("value"),total_peer_review_meeting_effort_test_design : store_review.findRecord("key","total_peer_review_meeting_effort_test_design").get("value"),total_peer_review_effort_test_design : store_review.findRecord("key","total_peer_review_effort_test_design").get("value"),nc_inspection_peer_review_manual_code : store_review.findRecord("key","nc_inspection_peer_review_manual_code").get("value"),nc_walkthrough_peer_review_manual_code : store_review.findRecord("key","nc_walkthrough_peer_review_manual_code").get("value"),total_peer_review_prepartion_effort_manual_code : store_review.findRecord("key","total_peer_review_prepartion_effort_manual_code").get("value"),total_peer_review_meeting_effort_manual_code : store_review.findRecord("key","total_peer_review_meeting_effort_manual_code").get("value"),total_peer_review_effort_manual_code : store_review.findRecord("key","total_peer_review_effort_manual_code").get("value"),nc_peer_review : store_review.findRecord("key","nc_peer_review").get("value"),total_peer_review_prepartion_effort : store_review.findRecord("key","total_peer_review_prepartion_effort").get("value"),total_peer_review_meeting_effort : store_review.findRecord("key","total_peer_review_meeting_effort").get("value"),total_peer_review_effort : store_review.findRecord("key","total_peer_review_effort").get("value")
	                       
	                       
	                        },success: function(response,opts) {
						     	Ext.getCmp("panel1").getEl().unmask();  
						     	Ext.toast.msg('Congratulations','Save Success!');
						    },failure: function(response,opts) {
						     	  Ext.getCmp("panel1").getEl().unmask();  
						    	  alert("Save failed!");
						    }
						});
					}},'->']

qam_basicdata_post.cgi的响应如下:

#!/usr/bin/perl -w

use strict;
use lib qw(. lib);

use Bugzilla;
use Bugzilla::Util;
use Bugzilla::Metrics::MP;
use Bugzilla::Error;
use Bugzilla::Constants;
use Date::Parse;
use Date::Format;
use Bugzilla::Metrics::QAMBasic;

my $cgi = Bugzilla->cgi;
my $dbh = Bugzilla->dbh;

my $user = Bugzilla->login(LOGIN_REQUIRED);
my $userid = $user->id;

######################################################

my $project_id = trim($cgi->param('project_id')) || '';
#Bugzilla::Metrics::MP->manual_save($project_id,$cgi,'size');
#my $initial = $cgi->param('total_initial') ;

my $month = $cgi->param('month');


	my $field_value = Bugzilla::Metrics::QAMBasic->get_basicdata_effort_params($cgi,$project_id);
	Bugzilla::Metrics::QAMBasic->save_edited_basicdata_effort($project_id,$field_value,$dbh,"qam_basicdata_effort",$month);

	my $size_values = Bugzilla::Metrics::QAMBasic->get_basicdata_size_params($cgi);
	Bugzilla::Metrics::QAMBasic->save_edited_basicdata_size($project_id,$size_values,"qam_basicdata_size",$month);

	my $test_values = Bugzilla::Metrics::QAMBasic->get_basicdata_test_params($cgi);
	Bugzilla::Metrics::QAMBasic->save_edited_basicdata_test($project_id,$test_values,"qam_basicdata_test",$month);

	my $testmodel_values = Bugzilla::Metrics::QAMBasic->get_basicdata_testmodel_params($cgi);
	Bugzilla::Metrics::QAMBasic->save_edited_basicdata_testmodel($project_id,$testmodel_values,"qam_basicdata_testmodel",$month);

	my $problem_values = Bugzilla::Metrics::QAMBasic->get_basicdata_problem_params($cgi);
	Bugzilla::Metrics::QAMBasic->save_edited_basicdata_problem($project_id,$problem_values,"qam_basicdata_problem",$month);

	my $review_values = Bugzilla::Metrics::QAMBasic->get_basicdata_review($cgi);
	Bugzilla::Metrics::QAMBasic->save_edited_basicdata_review($project_id,$review_values,"qam_basicdata_review",$month);



######################################################

print $cgi->header(-type => "application/json",-charset => "utf-8");
print "{success:true}"

从后台动态取数据:

Extjs的Store代码如下:

//store
	 var store_effort = Ext.create('Ext.data.JsonStore',{
	        fields: ['name','value','reference_value','key','unit'],proxy: {
			         type: 'ajax',url: 'qam_basicdata_ajax.cgi',reader: {
			             type: 'json',root: 'result'
			         }
			   }
	    });
? ? ? ? var month = Ext.util.Format.date(Ext.getCmp("month").getValue(),'Y-m') + '-00';
	//load date
	store_effort.load({
	    params: {
	        project_id : [% project_id %],type : 'effort',month : month
	    }
	});

后台响应qam_basicdata_ajax.cgi如下:

#!/usr/bin/perl -w

use strict;

# Include the Bugzilla CGI and general utility library.
use lib qw(. lib);

use Bugzilla;
use Bugzilla::Constants;
use Bugzilla::Error;
use Bugzilla::User;
use Bugzilla::Util;
use Bugzilla::Project;
use Bugzilla::Metrics::MP;
use Bugzilla::Metrics::QAMBasic;

# Check whether or not the user is logged in
my $user = Bugzilla->login(LOGIN_REQUIRED);
my $cgi = Bugzilla->cgi;
my $template = Bugzilla->template;
my $vars = {};
#my $dbh = Bugzilla->dbh;

$vars->{'section'} = trim($cgi->param('section')) || '';
$vars->{'format'} = trim($cgi->param('format')) || '';
my $project_id = trim($cgi->param('project_id')) || '';
my $month = trim($cgi->param('month')) || '';


#mikeba,Jan 11th,for the synchronization of database. Later should be replaced by permission
my $dbh = Bugzilla::DBSynchronize->dbh_project($project_id);
$vars->{'is_local'} = Bugzilla::DBSynchronize->dbh_is_local_project($project_id);
$vars->{'site_name'} = Bugzilla::DBSynchronize->dbh_get_sitename_project($project_id);

#my $project_id = $dbh->selectrow_array("select project_id from projects where name = '$project_name'");
$vars->{'project_id'} = $project_id;
$vars->{'project_name'} = $dbh->selectrow_arrayref("select name from projects where project_id = ?",undef,$project_id)->[0];


#################################################################

my $type = $cgi->param('type');

my $json = '';
if($type eq 'effort'){
#1. Get basic data:efforts
	$vars->{'basic'} = Bugzilla::Metrics::QAMBasic->get_old_efforts($dbh,$project_id);
	my $edited_basic_data = Bugzilla::Metrics::QAMBasic->get_edited_efforts("qam_basicdata_effort",$project_id,$month);
	$json = "{'result':[
					{'name' : 'Total Initial','reference_value' : 1,'key' : 'total_initial','value' : '$edited_basic_data->{'total_initial'}','unit' : 'Staff Day'},{'name':'Total Project Management','reference_value':1,'key':'total_project_management','value':'$edited_basic_data->{'total_project_management'}','unit':'Staff Day'},{'name':'Total Requirement Elicitation Effort','reference_value':'1','key':'total_requirement_elicitation','value':'$edited_basic_data->{'total_requirement_elicitation'}',{'name':'Total Requirement Analysis Effort','key':'total_requirement_analysis_effort','value':'$edited_basic_data->{'total_requirement_analysis_effort'}',{'name':'Total HighLevel Modeling Developing Effort','key':'total_high_level_modeling_developing_effort','value':'$edited_basic_data->{'total_high_level_modeling_developing_effort'}',{'name':'Total HighLevel Modeling Testing Effort','key':'total_high_level_modeling_testing_effort','value':'$edited_basic_data->{'total_high_level_modeling_testing_effort'}',{'name':'Total Model Architecture Effort','key':'total_model_architecture_effort','value':'$edited_basic_data->{'total_model_architecture_effort'}',{'name':'Total Interface Design Effort','key':'total_interface_design_effort','value':'$edited_basic_data->{'total_interface_design_effort'}',{'name':'Total Interface Testing Effort','key':'total_interface_testing_effort','value':'$edited_basic_data->{'total_interface_testing_effort'}',{'name':'Total LowLevel Modeling Developing Effort','key':'total_lowLevel_modeling_developing_effort','value':'$edited_basic_data->{'total_lowLevel_modeling_developing_effort'}',{'name':'Total Low Level Modeling Testing Effort','key':'total_low_level_modeling_testing_effort','value':'$edited_basic_data->{'total_low_level_modeling_testing_effort'}',{'name':'Total Hand Written Code Design Effort','key':'total_hand_written_code_design_effort','value':'$edited_basic_data->{'total_hand_written_code_design_effort'}',{'name':'Total Coding Effort','key':'total_coding_effort','value':'$edited_basic_data->{'total_coding_effort'}',{'name':'Total External Code UT Effort','key':'total_external_code_ut_effort','value':'$edited_basic_data->{'total_external_code_ut_effort'}',{'name':'Total Integration Testing Effort','key':'total_integration_testing_effort','value':'$edited_basic_data->{'total_integration_testing_effort'}',{'name':'Total System Testing Effor','key':'total_system_testing_effort','value':'$edited_basic_data->{'total_system_testing_effort'}',{'name':'Total Release Effort','key':'total_release_effort','value':'$edited_basic_data->{'total_release_effort'}',{'name':'Total Maintenance Effort','key':'total_maintenance_effort','value':'$edited_basic_data->{'total_maintenance_effort'}',{'name':'Total QA Effort','key':'total_qa_effort','value':'$edited_basic_data->{'total_qa_effort'}',{'name':'Total CM Effort','key':'total_cm_effort','value':'$edited_basic_data->{'total_cm_effort'}',{'name':'Total US Team Effort','key':'total_us_team_effort','value':'$edited_basic_data->{'total_us_team_effort'}',{'name':'Total Training Effort','key':'total_training_effort','value':'$edited_basic_data->{'total_training_effort'}',{'name':'Total Schedule Changes Dueto Requirement Changes','key':'total_schedule_changes_dueto_requirement_changes','value':'$edited_basic_data->{'total_schedule_changes_dueto_requirement_changes'}',{'name':'Total Document Effort','key':'total_document_effort','value':'$edited_basic_data->{'total_document_effort'}',{'name':'Total Efforts','key':'total_efforts','value':'$edited_basic_data->{'total_efforts'}',{'name':'Total Documentation Effort Percentage','key':'total_documentation_effort_percentage','value':'$edited_basic_data->{'total_documentation_effort_percentage'}','unit':'%'}
	]}";
	
}
print $cgi->header(-type => "application/json",-charset => "utf-8");
print $json;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读