Re: Multipage CForm using Ajax - Non ascii Characters

Peter Sparkes <[email protected]>
Newsgroups gmane.text.xml.cocoon.user
Message-ID <[email protected]>
Hi Robby,

Thanks for your reply.

The problem is that I don't have any client side scripting. I am using CForms to allow the site 
owner to populate a database. The data is then used in a number of different xhtml pages.

Kind regards

Peter

On 14/01/2013 15:55, Robby Pelssers wrote:
>
> Hi Peter,
>
> NoÂ…    encodeURIComponent should go in the client javascript.
>
> And in flowscript you have to decode the parameter value again.
>
> importClass(Packages.java.net.URLDecoder);
>
> var decodedvalue = URLDecoder.decode(cocoon.request.getParameter(“someparam”);
>
> Kind regards,
>
> Robby
>
> *From:*Peter Sparkes [mailto:[email protected]]
> *Sent:* Monday, January 14, 2013 4:45 PM
> *To:* [email protected]
> *Subject:* Re: Multipage CForm using Ajax - Non ascii Characters
>
> Thanks Greg and Robby for your replies.
>
> Unfortunately I can't get it to work. I assume encodeURIComponent goes into the flowscript:
>
> function multipage() {
> var lodgeId = cocoon.parameters.lodgeId;
> cocoon.request.setAttribute("lodgeId", lodgeId);
>
> var documentURI = cocoon.parameters["documentURI"];
> // parse the document to a DOM-tree
> var document = loadDocument(documentURI);
>
> //document = decodeURIComponent (document);
>
> // get the documentURI parameter from the sitemap which contains the location of the form 
> definition (model)
> var definitionURI = cocoon.parameters["definitionURI"];
>
> //create new form
> var form = new Form(definitionURI);
>
> // get the documentURI parameter from the sitemap which contains the location of the binding file
> var bindingURI = cocoon.parameters["bindingURI"];
> form.createBinding(bindingURI);
>
> // bind the document data to the form
> form.load(document);
>
> // show the form to the user until it is validated successfully
> form.showForm("lodgemul-display-pipeline.jx");
>
> // bind the form's data back to the document
>
> form.save(document);
>
> // save the DOM-tree back to an XML file,
> document = encodeURIComponent(document);
> saveDocument(document, documentURI);
>
> // show the xml generated from the form
> var success ='/B&B/England/Devon/Bideford/'+ lodgeId+'.html';
> //cocoon.redirectTo('/office/' + lodgeno+'.htm');
> cocoon.sendPage(success);
> }
>
> document = encodeURIComponent(document); produces the following error when I submit the completed form
>
>     Can't find method org.apache.cocoon.xml.dom.DOMStreamer.stream(string).
>
> What am I doing wrong
>
> Peter
>
> On 14/01/2013 14:27, gelo1234 wrote:
>
>     Ajax calls use default character encoding defined by HTTP 1.1 spec (which iso-8859-1, not
>     UTF-8). You have to encode BEFORE sending and decode AFTER retrieving those strings.
>
>     Encode with encodeURIComponent, decode with decodeURIComponent (if Javascript).
>
>     Greetings,
>
>     Greg
>
>
>
> On 14/01/2013 14:22, Robby Pelssers wrote:
>
>     You will probably need to encode the characters if you make an ajax callÂ…
>
>             var  somevalue = encodeURIComponent(“this is a value to be encoded”);
>
>     Robby
>
>     *From:*Peter Sparkes [mailto:[email protected]]
>     *Sent:* Monday, January 14, 2013 3:18 PM
>     *To:* Cocoon users
>     *Subject:* Multipage CForm using Ajax - Non ascii Characters
>
>     Hi
>
>     Cocoon 2.11
>
>     I have implemented a multipage CForm which uses Ajax. The form is based on the example at
>
>     http://cocoon.zones.apache.org/cocoon21/samples/blocks/forms/do-multipage.flow
>
>     The  form works fine except that it does not save non ascii characters correctly eg.
>
>     É €  ç  £
>
>
>
>     If I use one very long form without Ajax the above characters are correctly saved
>
>     Help please, How can I fix this problem
>
>
>     Peter
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.