Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Perl和jQuery回发值_Jquery_Perl - Fatal编程技术网

使用Perl和jQuery回发值

使用Perl和jQuery回发值,jquery,perl,Jquery,Perl,我试图在一个脚本中使用,一旦这个表单被提交,它将更新数据库并将结果返回给它自己,在同一个页面上,而不刷新页面。 我一直在试图理解为什么一旦表单被提交并且所有的值都被传递(我可以使用firebug看到所有的值),结果就不会显示在页面上,如下所示: print "<br>Display Results once the submit gets done: *$user_name*$user_id*$city_from*$state_from*$checkin_comments*<


我试图在一个脚本中使用,一旦这个表单被提交,它将更新数据库并将结果返回给它自己,在同一个页面上,而不刷新页面。 我一直在试图理解为什么一旦表单被提交并且所有的值都被传递(我可以使用firebug看到所有的值),结果就不会显示在页面上,如下所示:

 print "<br>Display Results once the submit gets done: *$user_name*$user_id*$city_from*$state_from*$checkin_comments*<br>"; 
print“
提交完成后显示结果:$user\u name*$user\u id*$city\u from*$state\u from*$checkin\u comments*
”;
我错过了什么。 我有一个测试代码,它显示了我正在尝试做的事情:

#!/usr/bin/perl

use strict;
use warnings;

use CGI;
use Data::Dumper;

my $q = CGI->new();

print $q->header();

my $transac = $q->param( 'transac' ) || '';

# Get values

my $user_name        = $q->param( 'user_name' )        || '';
my $user_id          = $q->param( 'userid' )           || '';
my $city_from        = $q->param( 'city_from' )        || '';
my $state_from       = $q->param( 'state_from' )       || '';
my $checkin_comments = $q->param( 'checkin_comments' ) || '';

print "<br>Display Results once the submit gets done: *$user_name*$user_id*$city_from*$state_from*$checkin_comments*<br>";



if($transac eq "checkin") {

  my $res = results();
  print "<br> *$res* $user_name*$user_id*$city_from*$state_from*$checkin_comments*<br>";

}else {

start_html();

}

sub results {

  if ($user_name) {

  return 'success';

  } else {

   return 'error';

  }

 } # End sub results


sub start_html {

 my $html_code = qq (
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE>
 <html>
 <head>
 <meta http-equiv="Content-type" content="application/xhtml+xml; charset=utf-8" />
 <meta http-equiv="Content-language" content="en-gb" />
 <title>jquery from hell</title>
 <script type="text/javascript" src="/jquery/1.10.2/jquery.min.js"></script>
 <script type="text/javascript">

   \$(function () {

    \$('.reply-comment').on('click', function (e) {

    e.preventDefault();

    var form = \$('.reply-form');

    var CommentID = \$(this).attr('id');

    //alert(CommentID);

    if (form.is(':visible')) {

    // hide it
    form.hide(function () {

      \$('#' + CommentID).html('<a href="" class="reply-comment" id="reply-comment-' + CommentID + '"> [ Check-In ] </a>');

    });

    }else{

    // show it
    form.show(function () {

            \$('#' + CommentID).html('<a href="" class="reply-comment" id="reply-comment-' + CommentID + '">[ Cancel ]</a>');

     });

    }

    });

   });

 </script>
<style>

  .reply-form {

         display:none;           
   }

 </style>

 <script type="text/javascript" >

  function onSuccess(data, status) {

    data = \$.trim(data);

     alert(data);

     var form = \$('.reply-form');
     var CommentID = 1;

    \$("form#reply-form").trigger('reset');

    if (data) {

    // hide it
    form.hide(function () {

      \$('#' + CommentID).html('<a href="" class="reply-comment" id="reply-comment-' + CommentID + '"> [ xCheck-In ] </a>');

    });

    }else{

    // show it
    form.show(function () {

            \$('#' + CommentID).html('<a href="" class="reply-comment" id="reply-comment-' + CommentID + '">[ xCancel ]</a>');

     });

   }
  }

  function onError(data, status, e) {

   alert( "Sorry, there was a problem!" );
   alert(data);
   console.log(e);

  }  

  \$(document).ready(function(){

  \$("form#reply-form").submit(function() { // reply-form is submitted

  var formData = \$("#reply-form").serialize();
 // alert(formData);

 \$.ajax({

   type: "post",
   url: "pjtest.pl",
   cache: false,
   data: formData,
   success: onSuccess,
   error:   onError

  });

 // return false to prevent normal browser submit and page navigation 
 return false;

 });

 });

</script>

</head>
<body bgcolor="#ffffff">
<table width="500" border="1" bgcolor="#ffffff" cellpadding="5" cellspacing="0">
               <tr>
                   <form name="postItem" action="test.pl" method="post" STYLE="margin: 0px; padding: 0px;">

                 <td align="center" width="33%" valign="bottom">
                   <input type="submit" id="submitLink" value="[ Post ]">
                 </td></form>

                 <td align="center" width="34%" valign="middle">
                   <a href="" class="reply-comment" id="1"> [ Check-In ] </a>
                 </td>

                   <form name="postItem" action="test.pl" method="post" STYLE="margin: 0px; padding: 0px;">

                 <td align="right" width="33%" valign="bottom">
                    <input type="submit" id="submitLink" value="[ Log out ]">&nbsp;&nbsp;
                 </td>
                  </form>
               </tr>
              </table>
              <!-- Check in stuff -->
              <div class="reply-form well">

              <table width="100%" border="0" bgcolor="#1A1A1A" cellpadding="5" cellspacing="0">
               <tr><form name="reply-form" id="reply-form" method="post" style="margin: 0px; padding: 0px;">
                       <input id="transac" type="hidden" name="transac" value="checkin">
                       <input id="user_name" type="hidden" name="user_name" value="theusername">
                       <input id="userid" type="hidden" name="userid" value="923">
                       <input id="city"  name="city_from" type="hidden" value="Boston" />
                       <input id="state" name="state_from" type="hidden" value="MA" />
                 <td align="center">
                       <textarea id="checkin_comments" name="checkin_comments" rows="4"  cols="40" class="span10"></textarea>
                 </td>
               <tr>
                 <td align="center">
                       <!--input type="submit" id="submitLink" value="[ Submit ]" /-->
                       <input type="image" src="/images/check.png" alt="Submit button" width="50" height="33" class="submit" id="send_comments">
                     </form>

                   </td>
                </tr>
                </table>
</body></html>);

print $html_code;

#return $html_code;

 } # End start_html sub
#/usr/bin/perl
严格使用;
使用警告;
使用CGI;
使用数据::转储程序;
my$q=CGI->new();
打印$q->header();
我的$transac=$q->param('transac')| |';
#获取价值
我的$user_name=$q->param('user_name')||“”;
我的$user|id=$q->param('userid')||';
my$city_from=$q->param('city_from')||';
我的$state_from=$q->param('state_from')||';
我的$checkin_comments=$q->param('checkin_comments')| |“”;
打印“
提交完成后显示结果:$user\u name*$user\u id*$city\u from*$state\u from*$checkin\u comments*
”; if($transac eq“签入”){ 我的$res=结果(); 打印“
*$res*$user\u name*$user\u id*$city\u from*$state\u from*$checkin\u comments*
”; }否则{ 启动html(); } 子结果{ 如果($user\u name){ 回归"成功",; }否则{ 返回“错误”; } }#最终子结果 子启动程序{ 我的$html\u代码=qq( 来自地狱的jquery \$(函数(){ \$('.reply comment')。关于('click',函数(e){ e、 预防默认值(); var form=\$('.reply form'); var CommentID=\$(this.attr('id'); //警报(CommentID); if(form.is(':visible')){ //藏起来 form.hide(函数(){ \$('#'+CommentID).html(''); }); }否则{ //表现出来 form.show(函数(){ \$('#'+CommentID).html(''); }); } }); }); .回覆表格{ 显示:无; } 成功时的功能(数据、状态){ 数据=\$.trim(数据); 警报(数据); var form=\$('.reply form'); var-id=1; \$(“表单#回复表单”).trigger('reset'); 如果(数据){ //藏起来 form.hide(函数(){ \$('#'+CommentID).html(''); }); }否则{ //表现出来 form.show(函数(){ \$('#'+CommentID).html(''); }); } } 功能onError(数据、状态、e){ 警报(“抱歉,出现问题!”); 警报(数据); 控制台日志(e); } \$(文档).ready(函数(){ \$(“表单#回复表单”).submit(函数(){//回复表单已提交 var formData=\$(“#回复表单”).serialize(); //警报(formData); \$.ajax({ 类型:“post”, url:“pjtest.pl”, cache:false, 数据:formData, 成功:一旦成功, 错误:onError }); //返回false以防止正常的浏览器提交和页面导航 返回false; }); }); ); 打印$html_代码; #返回$html_代码; }#结束-开始"html子模块
我做到了:

my $state_from       = $q->param( 'state_from' )       || '';
my $checkin_comments = $q->param( 'checkin_comments' ) || '';
# print "<br>Display Results once the submit gets done:   *$user_name*$user_id*$city_from*$state_from*$checkin_comments*<br>";
my$state_from=$q->param('state_from')||';
我的$checkin_comments=$q->param('checkin_comments')| |“”;
#打印“
提交完成后显示结果:$user\u name*$user\u id*$city\u from*$state\u from*$checkin\u comments*
”;
而且:

if (data) {

   // hide it
  form.hide(function () {

  \$('#' + CommentID).html('<a href="" class="reply-comment" id="reply-comment-' + CommentID + '"> [ xCheck-In ] </a>');

  });
  \$('#results').html(data);
if(数据){
//藏起来
form.hide(函数(){
\$('#'+CommentID).html('');
});
\$('#results').html(数据);
最后:

<body bgcolor="#ffffff">
<br>Display Results once the submit gets done: <span id='results'></span><br>
<table width="500" border="1" bgcolor="#ffffff" cellpadding="5" cellspacing="0">


提交完成后显示结果:
得到了这样的文本:

完成提交后显示结果:
成功用户名*923*Boston*MA*asd*

perlmonks.org的评论只建议对代码进行化妆品更改,没有对此处发布的问题给出任何答案。不幸的是,toolic的观点是,您在问题中没有这样说就向perlmonks交叉发布了。交叉发布是可以的,但通常认为告诉人们您被拒绝是礼貌的这样做。此外,一旦你在任何一个网站上得到答案,请立即更新另一个网站,这样人们就不会浪费时间寻找已经解决的问题的解决方案。此外,当你发布一大堆这样的代码时,你不太可能得到很多答案;这对人们来说太难了。试着将问题缩小到一个简短的范围,自足的例子,使人们更容易帮助你。是的,我当然会这样做!