2012-05-30 60 views
1
<input type="checkbox" id = "has_sidebar" name="cb" value="" onclick="result=$(this).attr('value', this.checked ? 1 : 0); alert('my result : 'result.context.value);" > 

RESULT.CONTEXT.VALUE具有该复选框(01)的值。的Perl的javascript/jquery的 - 变量传递从JavaScript/jquery的到perl

如何在perl变量中赋值?
这是代码。

<%class> 
use JSON; 
use URI::Escape; 

has 'data'; 
has 'cb'  => (isa => 'Array'); 
</%class> 

<%init> 
my $args = eval { 
     return from_json(uri_unescape($.data), { ascii => 1}); 
}; 
$m->redirect('/login') unless $USER && $USER->{'logged_in'}; 
$args->{'authors'} = [] unless $args->{'authors'} && ref($args->{'authors'}) eq 'ARRAY'; 
</%init> 

<li class="header"> 
     <p> 
       Authors 
       &emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp; 
       &emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp; 
       show sidebar 
     </p> 
</li> 
% my @author_box =(); 

% foreach my $a (sort { $a->{'last_name'} cmp $b->{'last_name'} || $a->{'first_name'} cmp $b->{'first_name'} } @{$args->{'authors'}}) { 
<li> 
     <p> 
       <a href="javascript:void(0)" onclick="remove_author(<% $a->{'id'} %>);" class="right icon-small icon-delete-small"></a> 
       <% $a->{'last_name'} %>, <% $a->{'first_name'} %> (<% $a->{'initials'} %>) 

       &emsp;&emsp;&emsp;&emsp; 
       &emsp;&emsp;&emsp;&emsp; 
       <input type="checkbox" id = "has_sidebar" name="cb" value="" onclick="result=$(this).attr('value', this.checked ? 1 : 0); alert('id : <% $a->{'id'} %> - checked: ' + result.context.value);" > 

     </p> 
</li> 

% # put the value of the checkbox in array 
<script type="text/javascript"> 
<% $.cb %> = result.context.value //this is not the RIGHT WAY!!! 
var hsb = []; 
hsb.push({ <% $a->{'id'} %>: <% $.cb %> }); 
</script> 

% } 
<li> 
     <p> 
       <input type="submit" value="Add" class="right" onclick="add_author();"/> 
       <input id="new_author" style="width:75%;" /> 
       <input type="hidden" id="new_author_data" /> 
     </p> 
</li> 
+0

“在窗体中添加隐藏字段?” – 2012-05-30 23:34:35

+3

链接到的代码不是Perl,它是某种带有perl嵌入的模板语言。你能告诉我们它是什么吗? – ysth

+0

梅森2是一个模板框架。只需要知道**如何将一个javacript变量分配给一个perl变量**。谢谢 – mamesaye

回答

2

据我理解你的问题正确:

因为Perl在执行服务器端(它构造HTML + JavaScript的),然后JavaScript的你不能从JavaScript传递一个值直接perl的运行CLIENT-SIDE。你可以从perl-> javascript传递值,但反之亦然。

您需要一个表单提交或一个AJAX调用,然后在服务器端处理。

的工作流程:

  1. 服务器端处理(在你的情况下运行你的Perl) - 构建页面
  2. 交付给客户
  3. 客户方的东西 - 运行的JavaScript
  4. 返回结果给服务器通过表格或AJAX请求
  5. 处理结果(再次运行一些perl)

编辑:

关于表单处理和AJAX的一切已经在互联网和Stackoverflow上编写了数百次。

你需要了解:Formprocessing和AJAX。

我也建议你看看jquery文档,因为jquery有一个非常有能力的ajax套件,这可以为你节省很多工作。

Form Processing with Perl

Another Beginners Guilde for Formprocessing with Perl

The jQuery Ajax Section

The jQuery Ajax-Call

或者只是谷歌和阅读你喜欢的啧啧。

+0

你说的话有道理。你可以给我更多的细节,通过简单的ajax请求返回结果到服务器,因为它是一个数组(我不知道ajax) – mamesaye

+0

@mamesaye看到我的编辑。 – Christoph

+0

谢谢,这是有用的信息 – mamesaye