Search...
FAQs
Subscribe
Pie
FAQs
Recent topics
Flagged topics
Hot topics
Best topics
Search...
Search within HTML Pages with CSS and JavaScript
Search Coderanch
Advance search
Google search
Register / Login
Post Reply
Bookmark Topic
Watch Topic
New Topic
programming forums
Java
Mobile
Certification
Databases
Caching
Books
Engineering
Micro Controllers
OS
Languages
Paradigms
IDEs
Build Tools
Frameworks
Application Servers
Open Source
This Site
Careers
Other
Pie Elite
all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Campbell Ritchie
Jeanne Boyarsky
Ron McLeod
Paul Clapham
Liutauras Vilda
Sheriffs:
paul wheaton
Rob Spoor
Devaka Cooray
Saloon Keepers:
Stephan van Hulst
Tim Holloway
Carey Brown
Frits Walraven
Tim Moores
Bartenders:
Mikalai Zaikin
Forum:
HTML Pages with CSS and JavaScript
Can't get parsing XML to work in JavaScript
Jeroen Berens
Greenhorn
Posts: 4
posted 13 years ago
Number of slices to send:
Optional 'thank-you' note:
Send
Hey, I have the following JavaScript that tries to parse some XML which was send by a
Servlet
:
Clientside Javascript:
function parseMessages(responseXML) { if (window.DOMParser) { parser=new DOMParser(); xmlDoc=parser.parseFromString(responseXML,"text/xml"); } else // Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(responseXML); } if (xmlDoc != null) { //setTableValue(adminmode); var posts = xmlDoc.documentElement; if (posts.childNodes.length > 0) { postOverview.setAttribute("bordercolor", "black"); postOverview.setAttribute("border", "1"); for (loop = 0; loop < posts.childNodes.length; loop++) { var post = posts.childNodes[loop]; var title = posts.getElementsByTagName("title")[0]; var content = posts.getElementsByTagName("content")[0]; var id = posts.getElementsByTagName("id")[0]; var date = posts.getElementsByTagName("date")[0]; appendRows(id.childNodes[0].nodeValue, title.childNodes[0].nodeValue, content.childNodes[0].nodeValue, date.childNodes[0].nodeValue, true); // todo } } } }
Servlet:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); String action = request.getParameter("action"); StringBuilder sb = new StringBuilder(); if(action.equals("changemode")){ String mode = (String) request.getSession().getAttribute("adminmode"); request.getSession().setAttribute("adminmode", mode.equals("0") ? "1" : "0"); } //sb.append("<adminmode>"+request.getSession().getAttribute("adminmode")+"</adminmode>"); Iterator it = WebLogService.getInstance().getPostings().iterator(); while(it.hasNext()){ Posting p = (Posting) it.next(); sb.append("<posting>"); sb.append("<id>"+ p.getId() + "</id>"); sb.append("<title>"+ p.getTitle() + "</title>"); sb.append("<content>"+ p.getContent() + "</content>"); sb.append("<date>" + p.getDate() + "</date"); sb.append("</posting>"); } response.setContentType("text/xml"); response.setHeader("Cache-Control", "no-cache"); response.getWriter().write("<postings>" + sb.toString() + "</postings>"); }
However when my javascript comes to the point where it runs:
var posts = xmlDoc.documentElement; if (posts.childNodes.length > 0) {...
it fails. My internetexplorer displays error message: Object required , line 124 , char 9 (which is .childNodes)
I don't know what to do, can you help me?
Eric Pascarello
author
Posts: 15385
6
posted 13 years ago
Number of slices to send:
Optional 'thank-you' note:
Send
Why are you setting the content type twice?
If you alert/console.log posts, what does it say?
Eric
Jeroen Berens
Greenhorn
Posts: 4
posted 13 years ago
Number of slices to send:
Optional 'thank-you' note:
Send
When I Alert, it says: [undefined]
Jeroen Berens
Greenhorn
Posts: 4
posted 13 years ago
Number of slices to send:
Optional 'thank-you' note:
Send
Sorry it says Object element but when I say
var posts = xmlDoc.getElementsByTagName("posts")[0];
it says it's undefined.. damnit
Jimmy Clark
Ranch Hand
Posts: 2187
posted 13 years ago
Number of slices to send:
Optional 'thank-you' note:
Send
postOverview.setAttribute("bordercolor", "black");
Where is the postOverview object created? It is not in the this function.
Jeroen Berens
Greenhorn
Posts: 4
posted 13 years ago
Number of slices to send:
Optional 'thank-you' note:
Send
whole
java
script:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ var req; var isIE; var on = "ON"; var off = "OFF"; function init(){ postOverview = document.getElementById("postsoverview"); button = document.getElementById("changeButton"); deleteColumn = document.createElement('th'); editColumn = document.createElement('th'); deleteColumn.innerHTML = 'Delete'; editColumn.innerHTML = 'Edit'; } function changemode(){ // appendRows(1, "hallo", "Hoi ik kwam even langs en ik dacht ik laat een berichtje achter", "12-1-8923", true); var requestString = "changeMode?action=changemode"; req = initRequest(); req.open("GET", requestString, true); req.onreadystatechange = callback; req.send(null); } function initRequest() { if (window.XMLHttpRequest) { if (navigator.userAgent.indexOf('MSIE') != -1) { isIE = true; } return new XMLHttpRequest(); } else if (window.ActiveXObject) { isIE = true; return new ActiveXObject("Microsoft.XMLHTTP"); } } function callback() { if (req.readyState == 4) { if (req.status == 200) { parseMessages(req.responseText); } } } function setTableValue(isAdmin){ if(isAdmin){ } else{ } } function appendRows(pid, ptitle, pcontent, pdate, isAdmin) { //variables var tblHeadObj = document.getElementById("postsoverview").tHead; var row; postsoverview.style.display = 'table'; row = document.createElement("tr"); cellId = document.createElement("td"); cellTitle = document.createElement("td"); cellContent = document.createElement("td"); cellDate = document.createElement("td"); cellId.innerHTML = pid; cellTitle.innerHTML = ptitle; cellContent.innerHTML = pcontent; cellDate.innerHTML = pdate; row.appendChild(cellId); row.appendChild(cellTitle); row.appendChild(cellContent); row.appendChild(cellDate); if(isAdmin){ tblHeadObj.rows[0].appendChild(deleteColumn); tblHeadObj.rows[0].appendChild(editColumn); cellDelete = document.createElement("td"); cellEdit = document.createElement("td"); buttonDelete = document.createElement("button"); buttonEdit = document.createElement("button"); buttonDelete.setAttribute("onclick", "deletePost("+pid+")"); buttonEdit.setAttribute("onclick", "editPost("+pid+")"); buttonEdit.innerHTML = "Edit"; buttonDelete.innerHTML = "Delete"; cellDelete.appendChild(buttonDelete); cellEdit.appendChild(buttonEdit); row.appendChild(cellDelete); row.appendChild(cellEdit); } postsoverview.appendChild(row); //tblHeadObj.rows[0].removeChild(deleteColumn); // tblHeadObj.rows[0].removeChild(editColumn); } function deletePost(pid){ } function editPost(pid){ } function parseMessages(responseXML) { if (window.DOMParser) { parser=new DOMParser(); xmlDoc=parser.parseFromString(responseXML,"text/xml"); } else // Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(responseXML); } if (xmlDoc != null) { //setTableValue(adminmode); var posts = xmlDoc.documentElement; alert(posts.toString()); if (posts.childNodes.length > 0) { postOverview.setAttribute("bordercolor", "black"); postOverview.setAttribute("border", "1"); for (loop = 0; loop < posts.childNodes.length; loop++) { var post = posts.childNodes[loop]; var title = posts.getElementsByTagName("title")[0]; var content = posts.getElementsByTagName("content")[0]; var id = posts.getElementsByTagName("id")[0]; var date = posts.getElementsByTagName("date")[0]; appendRows(id.childNodes[0].nodeValue, title.childNodes[0].nodeValue, content.childNodes[0].nodeValue, date.childNodes[0].nodeValue, true); // todo } } } }
I have gone to look for myself. If I should return before I get back, keep me here with this tiny ad:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com
reply
reply
Bookmark Topic
Watch Topic
New Topic
Boost this thread!
Similar Threads
XML string parsing in javascript
AJAX script isn't parsing XML response from servlet
charset and pageEncoding in jsp
showing load not a function
AJAX ResponseXML not working
More...