0

hi guys,

i'm trying to write an character converter using php and ajax. i'm getting a really anoing error(uncaught TypeError).

can someone help me with this.?:?: , i've added screenshot of the error. and this is the xml i'm trying to read generated with php

<?php

$key = $_GET['key'];

header('Content-type:text/ xml').PHP_EOL;

$xml_output  = "<?xml version=\"1.0\"encoding=\"UTF-8\"?>".PHP_EOL;
$xml_output .= "<Root>".PHP_EOL;
$xml_output .= "\r\t<converted-values>".PHP_EOL;
$xml_output .= "\r\t\t<decimal>".ord($key)."</decimal>".PHP_EOL;
$xml_output .= "\r\t\t<hexadecimal>0x".dechex(ord($key))."</hexadecimal>".PHP_EOL;
$xml_output .= "\r\t\t<octal>0".decoct(ord($key))."</octal>".PHP_EOL;
$xml_output .= "\r\t\t<hyper>&amp;0x".dechex(ord($key)).";</hyper>".PHP_EOL;
$xml_output .= "\r\t\t<binary>".decbin(ord($key))."B</binary>".PHP_EOL;

$xml_output .= "\r\t</converted-values>".PHP_EOL;
$xml_output .="</Root>".PHP_EOL;

echo $xml_output;
?>

thanx in advance

Attachments Untitled.jpg 47.16 KB
3
Contributors
4
Replies
6
Views
5 Years
Discussion Span
Last Post by Donnovan
0

thanx for answering here is my js code

var req; 

  
  function convertToXML()
  { 
    var key = document.getElementById("key"); 
    var keypressed = document.getElementById("keypressed"); 
    keypressed.value = key.value; 
     
    var url = "http://127.0.0.1/PHP/convert.php?key="+escape(key.value);
    if (window.XMLHttpRequest){ 
      req = new XMLHttpRequest(); 
    } 
    else if (window.ActiveXObject){ 
      req = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    req.open("Get",url,true); 
    req.onreadystatechange = callback; 
    req.send(null);
  } 

  function nonMSPopulate()
  {
    var resp = req.responseText;
    var parser = new DOMParser();
    var dom = parser.parseFromString(resp,"text/xml");
                     
    decVal = dom.getElementsByTagName("decimal");
    var decimal = document.getElementById('decimal');
    decimal.value=decVal[0].childNodes[0].nodeValue;
   
    hexVal = dom.getElementsByTagName("hexadecimal");
    var hexadecimal = document.getElementById('hexadecimal');    
    hexadecimal.value=hexVal[0].childNodes[0].nodeValue;
     
    octVal = dom.getElementsByTagName("octal");
    var octal = document.getElementById('octal');    
    octal.value=octVal[0].childNodes[0].nodeValue;
           
    hyperVal = dom.getElementsByTagName("hyper");
    var hyper = document.getElementById('hyper');    
    hyper.value=hyperVal[0].childNodes[0].nodeValue;
        
    binaryVal = dom.getElementsByTagName("binary");
    var bin = document.getElementById('bin');    
    bin.value=binaryVal[0].childNodes[0].nodeValue;
  }

  function msPopulate()
  {
    var resp = req.responseText;
    var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async="false";
    xmlDoc.loadXML(resp);
                  
    dec = xmlDoc.getElementsByTagName('decimal');
    var decimal = document.getElementById('decimal');
    decimal.value = dec[0].firstChild.data;
    
    hexi = xmlDoc.getElementsByTagName('hexadecimal');
    var hexadecimal = document.getElementById('hexadecimal');
    hexadecimal.value=hexi[0].firstChild.data;
                  
    oct = xmlDoc.getElementsByTagName('octal');
    var octal = document.getElementById('octal');
    octal.value=oct[0].firstChild.data;
                  
    bin = xmlDoc.getElementsByTagName('binary');
    var binary = document.getElementById('bin');
    binary.value=bin[0].firstChild.data;    
        
    hypertextml = xmlDoc.getElementsByTagName('hyper');
    var hyper = document.getElementById('hyper');
    hyper.value=hypertextml[0].firstChild.data;     
  }
  
  function callback()
  { 
    if (req.readyState==4){ 
      if (req.status == 200){ 
     
        if (window.XMLHttpRequest){
            nonMSPopulate(); 
              } 
            else if (window.ActiveXObject){ 
                msPopulate();
            }
        } 
      }
      clear();
  }  

  function clear()
  { 
    var key = document.getElementById("key"); 
    key.value=""; 
  }
  
  function focusIn()
  { 
    document.getElementById("key").focus();
  }
0

The error said that your object does not have childNodes to be called. In your code line 30, 34, 38, 42, and 46, they all try to call this childNodes. You didn't check for existent of the children, so it throws an error when there is no child node at all. Try to see how it returns from your parsing using alert() function?

// the first portion of what may be the problem
decVal = dom.getElementsByTagName("decimal");
var decimal = document.getElementById('decimal');
decimal.value=decVal[0].childNodes[0].nodeValue;

Edited by Taywin: n/a

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.