2014-12-16 3 views
-4

Таким образом, моя проблема в приведенном ниже коде выглядит следующим образом: if else if statement внизу: 1. код в обоих операциях if работает идеально. 2. Проблема в том, что когда я запускаю код на одном, можно использовать. если я делаю 2 отдельных, если заявления только второй работает. если я делаю 1, если и еще один, если работает только оператор if, а else - ничего не делает.JavaScript, извлекающий данные из XML (если инструкция else не работает)

немного больше информации: то, что я пытаюсь сделать, - каждый раз, когда функция истекает время и повторяется, он проверяет операторы if и если что-то изменилось, чтобы запустить соответствующее предложение if. ПОЖАЛУЙСТА, ПОЗВОЛЬТЕ, ЧТО МНЕ ЗНАТЬ, ЕСЛИ НУЖНА БОЛЬШЕ ИНФОРМАЦИИ.

var xmlHttp = createXmlHttpRequestObject(); 

function createXmlHttpRequestObject() 
{ 
var xmlHttp; 

if(window.ActiveXObject) 
{ 
    try 
    { 
     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    }catch(e) 
    { 
     xmlHttp = false; 
    } 
} 
else 
{ 
    try 
    { 
     xmlHttp = new XMLHttpRequest(); 
    }catch(e) 
    { 
     xmlHttp = false; 
    } 
} 

if(!xmlHttp) 
    alert("cant create object"); 
else 
    return xmlHttp; 


} 

function process_search() 
{ 
if(xmlHttp.readyState==0 || xmlHttp.readyState==4) 
{ 
    search_parameter = encodeURIComponent(document.getElementById("userInput").value); 
    search_type = encodeURIComponent(document.getElementById("userOptions").value); 
    xmlHttp.open("GET", "../pages/search_xml.php?search_parameter=" + search_parameter +  "&search_type=" + search_type, true); 
    xmlHttp.onreadystatechange = handleServerResponse; 
    xmlHttp.send(null); 
} 
else 
{ 
    setTimeout('process_search()',5000); 
} 
} 

function handleServerResponse() 
{ 
if(xmlHttp.readyState==4) 
{ 
    if(xmlHttp.status==200) 
    { 
     xmlResponse = xmlHttp.responseXML; 
     root = xmlResponse.documentElement; 

     if(document.getElementsByTagName('find_users')) // FIND USERS 
     { 
      first_name = root.getElementsByTagName('first'); 
      last_name = root.getElementsByTagName('last'); 

      users = document.createElement('ul'); 
      users.setAttribute("id", "usersFound"); 

      document.getElementById("underInput").innerHTML = ""; //RESETS THE DIV BEFORE INSERTING DATA 
      for(var i=0; i< first_name.length; i++) 
      { 
       usersList = document.createElement('li'); 
       t = document.createTextNode(first_name.item(i).firstChild.data + " - " + last_name.item(i).firstChild.data + "<br/>"); 
       usersList.appendChild(t); 
       underInput = document.getElementById("underInput"); 

       underInput.appendChild(usersList); 
      } 
     }else if(document.getElementsByTagName('find_config_item')) //FIND CONFIG ITEMS 
     { 
      item = root.getElementsByTagName('item'); 
      desc = root.getElementsByTagName('description'); 

      itemsList = document.createElement('ul'); 
      itemsList.setAttribute("id", "itemsFound"); 

      document.getElementById("underInput").innerHTML = ""; //RESETS THE DIV BEFORE INSERTING DATA 
      for(var i=0; i< item.length; i++) 
      { 
       itemList = document.createElement('li');  // CREATE LIST ITEM ELEMENT 
       t = document.createTextNode(item.item(i).firstChild.data + " - " + desc.item(i).firstChild.data + "<br/>"); 
       itemList.appendChild(t); 
       underInput = document.getElementById("underInput"); 

       underInput.appendChild(itemList); 
      } 
     } 


     setTimeout('process_search()', 5000); 
    } 
    else 
    { 
     alert("something is wrong"); 
    } 
} 
} 

ответ

0

Вы не должны полагаться на try/catch для этого прецедента. Вы можете быть достаточно уверены XMLHttpRequest или объект Mircrosoft.XMLHTTP будет существовать, так что вы могли бы упростить код на следующее:

function createXmlHttpRequestObject() { 
    return window.XMLHttpRequest ? new XMLHttpRequest() : new XDomainRequest(); 
} 

var xmlHttp = createXmlHttpRequestObject(); 

Позвольте мне знать, если вы хотели бы видеть в унтер ТРОЙНЫХ версии

+0

благодарит за что ..работано совершенное andi понимает это ... как насчет исходного вопроса относительно моей проблемы с if else if. если я запустил его, у него все еще будет такая же проблема] – smanunta

+0

Я не уверен, что вы просите. Не могли бы вы прояснить? – Calummm

Смежные вопросы