Re: Pure PHP Templating Class/AJAX Problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Well after looking at the template thing you posted with your link it
seems to me like PHP is used to create working XML. So i wonder why
you are using AJAX here.
Now could it be that you use appendChild() ? That function would
simply add the XML again.

It's not easy to tell if you are not showing the JavaScript code ..
Still it simply depends on how you are importing the node you get from
XMLHttpRequest() or responseXML

Btw. importNode() is not working on all Browsers ..
Below is a code snipped I use for my AJAX class in JavaScript to copy
a node of one XML document (like from responseXML) into another. It
works in IE6+ and all W3C compliant browsers.
To make this work you will still have to make some ajustments.

xml_obj.prototype.xml_import_node = function(node, to_node,
all_children) { // cross browser importNode, NOTE: if toNode not
specified it will be set to current root_element
// appends node as a child to to_node
	// if all_children is true then all child nodes will be imported too
	/* NOTE TYPES:
	ELEMENT_NODE = 1;
	ATTRIBUTE_NODE = 2;
	TEXT_NODE = 3;
	CDATA_SECTION_NODE = 4;
	ENTITY_REFERENCE_NODE = 5;
	ENTITY_NODE = 6;
	PROCESSING_INSTRUCTION_NODE = 7;
	COMMENT_NODE = 8;
	DOCUMENT_NODE = 9;
	DOCUMENT_TYPE_NODE = 10;
	DOCUMENT_FRAGMENT_NODE = 11;
	NOTATION_NODE = 12;
	*/
	if (!node) return false;
	if (!this.DOC) this.DOC = document;
	if (!to_node.nodeType) {
		if (!this.XML) return false;
		try {
			to_node = this.XML.documentElement;
			this.DOC = this.XML;
		} catch(e) {
			return false;
		}
	}
	try {
		if (!node.nodeType) return false;
		switch (node.nodeType) {
				case 1: // new element
					var new_node = this.DOC.createElement(node.nodeName);
					if (node.attributes && (node.attributes.length > 0)) { // if it
has attributes
						for (var count = 0; (count < node.attributes.length); count++) {
							this.xml_import_node(node.attributes[count], new_node);
						}
					}
					if (all_children && (node.childNodes && (node.childNodes.length >
0))) { // if child nodes
						var dump = null;
						for (var count = 0; (count < node.childNodes.length); count++) {
							this.xml_import_node(node.childNodes[count], new_node, true);
						}
					}
					to_node.appendChild(new_node);
					return new_node;
					break;
				case 2: // new attribute
					var name = node.nodeName;
					switch (node.nodeName.toLowerCase()) {
						case 'onload':
						case 'onunload':
						case 'onblur':
						case 'onclick':
						case 'ondblclick':
						case 'onfocus':
						case 'onkeydown':
						case 'onkeypress':
						case 'onkeyup':
						case 'onmousedown':
						case 'onmousemove':
						case 'onmouseout':
						case 'onmouseover':
						case 'onmouseup':
							var eval_code = 'to_node.'+node.nodeName.toLowerCase();
							eval_code += ' = function() { '+node.nodeValue+' };';
							eval(eval_code);
							break;
						case 'style':
							to_node.style.cssText = node.nodeValue; // IE FIX
							// no break
						case 'class':
							to_node.className = node.nodeValue; //IE FIX
							// no break
						default:
							to_node.setAttribute(node.nodeName, node.nodeValue);
					}
					return to_node;
					break;
				case 3: // new text_node
				case 4: // new cdata section
				case 8: // new comment node
					to_node.appendChild(this.DOC.createTextNode(node.nodeValue));
					return to_node;
					break;
				case 5: // new entity reference
				case 6: // new entity node
				case 7: // new processing instruction
				case 9: // new document node
				case 10: // new document type node
				case 11:  // new fragment node
				case 12: // new notation node
					return null; // not needed. if you want it then implement it
					break;
				default: return false;
		}
	} catch(e) {
		alert(e.message);
		return false;
	}
}

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux