Andrew wrote:
Hi,
I have an ajaxified form which has a number of required fields. If you submit the form without filling in any of the required fields 2 alert are displayed. The first says 'No handler found for element head. Show server response?', and the second alert says 'No handler found for element body. Show server response?'. If you click yes to both questions another window opens up showing your form page minus any of the form fields! If all required fields are entered correctly then the form submits as normal. What could be the issue here? When the page firtst loads I get the following dojo debug lines:

DEBUG: Loading URIresources/dojo/../forms/js/__package__.js
DEBUG: Loading URIresources/dojo/../forms/js/common.js
DEBUG: Loading URIresources/dojo/../forms/js/CFormsForm.js
DEBUG: Loading URIresources/dojo/../ajax/js/BUHandler.js
DEBUG: Loading URIresources/dojo/../ajax/js/insertion.js
DEBUG: Loading URIresources/dojo/../forms/js/CFormsRepeater.js
DEBUG: Loading URIresources/dojo/../forms/js/CFormsSuggest.js
DEBUG: Loading URIresources/dojo/src/widget/html/ComboBox.js
DEBUG: Loading URIresources/dojo/src/widget/ComboBox.js
DEBUG: Loading URIresources/dojo/src/widget/html/stabile.js
DEBUG: Loading URIresources/dojo/src/widget/InlineEditBox.js

My sitemap is as follows:

            <map:match pattern="**viewform-*.xml">
                <map:generate type="newjx" src="jx/{2}.jx"/>
                <map:transform type="browser-update"/>
                <map:transform type="cinclude"/>
                <map:transform type="xslt-saxon" src="style/{2}.xsl"/>
                <map:transform type="cinclude"/>
                <map:transform type="i18n">
                  <map:parameter name="locale" value="en-US"/>
                </map:transform>
<map:transform src="template-style/forms- samples-styling.xsl"/>
                <map:transform type="i18n">
                  <map:parameter name="locale" value="en-US"/>
                </map:transform>
                <map:select type="ajax-request">
                  <map:when test="true">
                    <map:serialize type="xml"/>
                  </map:when>
                  <map:otherwise>
                    <map:serialize type="html"/>
                  </map:otherwise>
                </map:select>
            </map:match>

Andrew--

I think you need to understand how the AJAX publishing works, in particular the browser-update transformer.

When an AJAX request is received, the response to the browser should not be the entire document (that's not very AJAX-ey!), but only the parts that need to be updated in the DOM. This is the job of the browser-update transformer; it filters out everything except elements in the "bu:" namespace (produced by the CForms JX macros), which the client-side JavaScript (Dojo) knows how to handle.

In your pipeline it looks like the browser-update transformer is executing, filtering out everything but the "bu:" elements which contain the form fields that need to be updated. But then you pass it through some other transformation stages which *add* content back in! All of a sudden you've got a document with much more than the "bu:" elements recognized by Dojo, so it pukes on those unrecognized elements.

I believe you need to restructure your pipeline so the browser-update transformer comes after the transforms that add content.

Hope that helps
--Jason





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to