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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |