0

サーバーは Cherrypy でプログラムされており、Mako テンプレートも使用しています。

そして、ユーザーと連携するための変数 dict (情報の作業を含む変数 Mako) があります (これは Mako と Javascript を使用する必要があります)。

値の Mako を Javascript に渡すことができないという問題が 1 つあります。

MAKO --->>> JAVASCRIPT とその逆 パスできません。

ユーザーが情報を変更したい場合は、フォームを使用する必要があります。情報は、例えば、個人を特定するデータである。

サーバー localhost:8100 に接続すると、Url が自動的にディクテーションされます。

ユーザーは、変更の場合はボタンの send.(submit) を押します。サーバーは Javascript で値を受け取り、セパレータは Js で、old は 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

これを行う理由はそれを正当化するものではないと確信していますが、質問に答えるために、これはトークンを変更する方法です。完全に必要というわけではありませんが、コードが短くなります。

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 に答える