You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Peter Davison (JIRA)" <de...@tapestry.apache.org> on 2007/11/09 20:05:51 UTC

[jira] Created: (TAPESTRY-1899) XTile doesn't handle response payloads larger than 4096 bytes in firefox

XTile doesn't handle response payloads larger than 4096 bytes in firefox
------------------------------------------------------------------------

                 Key: TAPESTRY-1899
                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1899
             Project: Tapestry
          Issue Type: Bug
          Components: Contrib
    Affects Versions: 4.1.2
         Environment: Client: Windows XT/Firefox 2.0.0.9
Server: Windows XT/JBoss 4.0.4
Tapestry: 4.1.2
            Reporter: Peter Davison


The extractData method of the XTile component doesn't handle AJAX responses larger than 4096 bytes when using the XMLHttpRequest object - as opposed to the ActiveXObjects.

The problem is that extractData - as defined in XTile.script - only looks at the firstChild of the <sp> element as shown in the following code snippet:

	function extractData(response)
	{
		var xml = response.responseXML.documentElement;
		var dataList = new Array();
		if (xml) dataList = xml.getElementsByTagName('sp');
		var dataLen = dataList.length;
		var data = new Array();
		for (i = 0; i < dataLen; i++) {
			var child = dataList[i].firstChild;
			if (child)
				data[i] = child.data;
			else
				data[i] = "";
		}
		return data;
	}

The following version of extractData fixes the problem by iterating over all children of the <sp> node:

	function extractData(response)
	{
		var xml = response.responseXML.documentElement;
		var dataList = new Array();
		if (xml) {
			dataList = xml.getElementsByTagName('sp');
		}
		var dataLen = dataList.length;
		var data = new Array();
		for (i = 0; i < dataLen; i++) {
			var children = dataList[i].childNodes;
			data[i] = "";
			for (j = 0; j < children.length; j++) {
				var child = children[j];
				if (child) {
					data[i] += child.data;
				}
			}
		}
		return data;
	}

Tested in both IE and Firefox and this change works properly in both cases.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org