2013-03-27 3 views
0

У меня есть сервер, запрограммированный в Cherrypy, и я также использую шаблон Мако.Другие разделители Я хочу использовать (не & и =) при отправке формы

И у меня есть переменная dict (переменная Mako, которая содержит информацию) для работы с пользователем (это я должен использовать Mako и JAvascript).

У меня есть одна проблема, что я не могу передать значение Mako в Javascript.

MAKO --- >>> JAVASCRIPT и vicecersa Не может пройти.

Когда пользователь хочет изменить информацию, мне нужно использовать форму. Данные, например, являются идентификацией человека.

Когда я подключаюсь, когда сервер localhost: 8100, и у меня есть автоматическое определение на Url.

Пользователь нажимает кнопку отправки. (Отправить) в случае изменения. Сервер получает значение в Javascript с разделителем в Js и старым в MAko. У меня проблема для чтения и преобразования разделителя в Javascript.

Можно изменить форму отправки строки Пока или до отправки?

Я хочу запрограммировать форму отправки, потому что я хочу использовать другой разделитель (не & и =).

Это возможно?

Сейчас я пишу один пример:

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

С, если функция программируется при отправке

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

Repeat: когда я послал параметр, я не хочу этого разделителя & или = и я хочу использовать другие. Сепаратор

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

+5

Вы * можете * изменить это, но вам придется реализовать все вручную (создайте URL-адрес из имени и значения поля формы, а затем измените href документа). Но вы не должны этого делать. Просто адаптируйте сценарий получения, чтобы справиться со стандартными разделителями. Есть причина, по которой они стандартные. – Dave

+1

@RobG Я верю (но может быть неправильно), что он хочет изменить форму, чтобы вместо отправки GET на 'myparser.php? Field1 = value1 & field2 = value2' он перешел в поле myparser.php1% 24value1 +% 23 % + поле2% 24value2'. Я могу только представить, что он беспокоится о том, что пользователи набирают '=' или '&' и не знакомы с процентной кодировкой. – Dave

ответ

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, но вам нужно будет что-то сделать, чтобы предотвратить использование плохих символов.

И, наконец, это только отправная сторона. Вам все равно нужно сделать что-то умное на вашей серверной стороне, чтобы на самом деле читать эти значения.

+0

Извините, у меня нет файла в php, и вы не волнуетесь. Теперь я знаю, что менялся для моего проекта –

+1

Несомненно, не имеет значения, к какому сценарию вы отправляете. Я просто использую PHP как общий «серверный скрипт», когда я говорю о веб-сайтах. – Dave

+0

Извините, @david ... Где я могу найти сайты, которые объясняют это? Или Передайте мне сайты, которые помогают в моем случае? –