2013-03-27 23 views
0

我已经在Cherrypy中编程了服务器,并且还使用了Mako模板。当我提交表单时,我想要使用的其他分隔符(不&&=)

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

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

MAKO --- >>> JAVASCRIPT and vicecersa不能通过。

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

当我连接时,服务器localhost:8100,我有在自动字典的网址。

用户按下按钮的发送。(提交)如有更改。 服务器在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 但是,这不是对我感兴趣。

P.s. Jquery或Javascript中的解决方案对我来说是相同的。

+0

你的问题不是很清楚。你能用非常简单的术语来表达事物吗? – RobG 2013-03-27 00:39:27

+5

你*可以*改变这一点,但你必须手动实施一切(从每个表单字段的名称和值构建一个URL,然后更改文档的href)。但是你*不应该这样做。只需调整接收脚本以适应标准分隔符。他们有标准的原因。 – Dave 2013-03-27 00:43:34

+1

@RobG我相信(但可能是错误的),他想改变一个表单,以便通过GET提交给'myparser.php?field1 = value1&field2 = value2',而不是通过'myparser.php?field1%24value1 +%23 %+ FIELD2%24value2'。我只能想象他担心用户输入'='或'&'而不熟悉百分比编码。 – Dave 2013-03-27 00:45:19

回答

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事件,我们阻止(preventDefaultreturn false是双倍确定的),然后获取所有表单的元素(this.elements)并遍历它们。在循环结束时,q是我们想要提交的完整URL(使用action属性并填写所有名称/值),因此我们只需设置HREF即可。在这种情况下为myparser.php

请注意,这没有任何字符替换。你应该以某种方式使f[i].value安全。从你的问题来看,很明显你不需要标准的URL编码,但你需要做一些事情来防止使用错误的字符。

最后,这只是发送方。你仍然需要在你的服务器端做一些巧妙的事情,实际上读取这些值。

+0

对不起,我没有在PHP文件,你不用担心。现在我知道改变我的项目 – 2013-03-27 01:14:09

+1

当然,你发送的脚本并不重要。当我谈论网站时,我只是使用PHP作为通用的“服务器脚本”标记。 – Dave 2013-03-27 01:15:32

+0

对不起@david ...我在哪里可以找到解释这些事情的一些网站? 或将我的网站帮助我的情况? – 2013-03-27 01:17:58

相关问题