2013-03-27 49 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