0

我在 Cherrypy 中编写了服务器,我也使用 Mako 模板。

而且我有变量 dict(包含信息工作的变量 Mako)用于与用户一起工作(我必须使用 Mako 和 JAvascript)。

我有一个问题,我无法将值的 Mako 传递给 Javascript。

MAKO --->>> JAVASCRIPT 和viccersa 不能通过。

当用户想要更改信息时,我需要使用表单。例如,信息是识别人的数据。

当我连接服务器 localhost:8100 时,我在 Url 上自动输入了字典。

用户按下按钮的发送。(提交)以防发生变化。服务器接收 Javascript 中的值,Js 中的分隔符和 MAko 中的旧分隔符。我有读取和转换 Javascript 中的分隔符的问题。

可以在发送时或之前更改字符串的提交形式吗?

我想对提交的表单进行编程,因为我想使用另一个分隔符(不是 & 和 =)。

这个有可能?

现在我写一个例子:

www.theuser.com/?Name=IBM&surname=PC

具有发送时可编程功能

www.thepc.com/?Name%24+IBM+%23%+Surname%24+PC

重复:当我发送参数时,我不想要这个分隔符 & 或 =,我想使用其他分隔符。分隔器

    javascript              Mako           

      =                       %24+
      &                       +%23+

此查询字符串是我的项目的原始内容:

http://localhost:8100/index2?json_data=demo_title%24+Demo+title+%23+proc1_script%24+script.sh+parameters+%23+proc1_chk_make%24+on+%23+outputp2_value%24++%23+demo_input_description%24+hola+mundo+%23+outputp4_visible%24+on+%23+outputp4_info%24++%23+inputdata1_max_pixels%24+1024000+%23+tag%24++%23+outputp1_id%24+nanana+%23+proc1_src_compresion%24+zip+%23+proc1_chk_cmake%24+off+%23+outputp3_description%24++%23+outputp3_value%24++%23+inputdata1_description%24+input+data+description+%23+inputp2_description%24+bien%3F+%23+inputp3_description%24+funciona+%23+proc1_cmake%24+-D+CMAKE_BUILD_TYPE%3Astring%3DRelease++%23+outputp2_visible%24+on+%23+outputp3_visible%24+on+%23+outputp1_type%24+header+%23+inputp1_type%24+text+%23+demo_params_description%24+va+bien+%23+outputp1_description%24++%23+inputdata1_type%24+image2d+%23+proc1_chk_script%24+off+%23+demo_result_description%24+win%3F+%23+outputp2_id%24+nanfdsvfa+%23+inputp1_description%24+funciona+%23+demo_wait_description%24+boh+%23+outputp4_description%24++%23+inputp2_type%24+integer+%23+inputp2_id%24+papapa+%23+outputp1_value%24++%23+outputp3_id%24+nananartrtrt+%23+inputp3_id%24+pepepe+%23+outputp3_type%24+header+%23+inputp3_visible%24++off+%23+outputp1_visible%24+on+%23+inputdata1_id%24+id_lsd+%23+outputp4_value%24++%23+inputp2_visible%24+on+%23+proc1_source%24+lsd-1.5.zip+%23+inputp3_value%24+si+%23+proc1_make%24+-j4+-C++%23+images_config_file%24+cfgmydemo.cfg+%23+outputp2_type%24+header+%23+proc1_subdir%24+xxx-1.5+%23+proc1_url%24+http%3A%2F%2Fwww.ipol.im%2Fpub%2Falgo%2F...+%23+inputdata1_image_depth%24+1x8i+%23+inputp1_id%24+popopo+%23+inputp1_value%24+si+%23+inputp2_value%24+no+%23+demo_data_filename%24+data_saved.cfg+%23+inputdata1_info%24+info_lsd+%23+outputp3_info%24++%23+inputdata1_image_format%24+.pgm+%23+outputp1_info%24++%23+inputdata1_compress%24+False+%23+inputp1_visible%24+on+%23+proc1_id%24+lsd+%23+outputp4_id%24+nana+%23+outputp2_description%24++%23+outputp4_type%24+header+%23+outputp2_info%24++%23+inputp3_type%24+float+%23+&tag=&inputp4_id=hi&inputp4_type=text&inputp4_description=hello+program&inputp4_value=no&inputp4_info=bol&inputp4_visible=on

对于主持人:我在帖子https://stackoverflow.com/questions/13353539/how-to-change-how-the-url-is-encoded-when-a-form-is-submitted上阅读了 但这不是对我感兴趣。

Ps Jquery 或 Javascript 中的解决方案对我来说是平等的。

4

1 回答 1

1

好吧,我很确定您这样做的原因并不能证明这样做是合理的,但是要回答这个问题,这就是您更改令牌的方式。我假设 jQuery,它不是完全必要的,但会使代码更短。

HTML:

<form id="myform" action="myparser.php">
<input ...>
</form>

JavaScript:

$('#myform').submit(function(e){
    e.preventDefault();
    var q=$(this).attr('action'),f=this.elements,i;
    for(i=0;i<f.length;++i){
        q+=(i===0?'?':'+%23%+')+f[i].name+'%24'+f[i].value;
    }
    document.location.href=q;
    return false;
});

这是略微缩小的,所以这里是要点。我们首先绑定到submit我们阻止的事件(preventDefault并且return false可以肯定),然后获取所有表单的元素(this.elements)并遍历它们。在循环结束时,q是一个我们想要提交的完整 URL(使用action属性并填写所有名称/值),所以我们只需将 HREF 设置为它,然后我们就走了。在这种情况下myparser.php

请注意,这不会进行任何字符替换。你应该f[i].value以某种方式确保安全。从您的问题来看,您似乎不想要标准的 URL 编码,但您需要做一些事情来防止使用坏字符。

最后,这只是发送方。您仍然需要在服务器端做一些聪明的事情来实际读取这些值。

于 2013-03-27T01:12:41.607 回答