我在Cherrypy中编写了服务器,我也使用了Mako Template。
我有与用户合作的变量dict(包含信息工作的变量Mako)(我必须使用Mako和JAvascript)。
我有一个问题,我无法将值的Mako传递给Javascript。
MAKO --->>> JAVASCRIPT和vicecersa不能通过。
当用户想要更改信息时,我需要使用该表单。 例如,信息是识别人的数据。
当我连接服务器localhost:8100并且我已经自动dict on Url。
用户按下按钮的发送。(提交)以防万一。 服务器使用Js中的分隔符和MAko中的旧分隔符接收Javascript中的值。 我有阅读的问题,并在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 :(得分: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编码,但是您需要做一些事情来防止使用不良字符。
最后,这只是发送方。您仍然需要在服务器端做一些聪明的事情来实际读取这些值。