JavaScript从XML中提取数据(如果else语句不起作用)

时间:2014-12-16 04:28:59

标签: javascript html ajax

所以我在下面的代码中的问题是if if else if语句在底部:  1.两个if语句中的代码都很完美。  2.问题是,当我运行代码时,可以使用。     如果我做2个单独的if语句只有第二个有效。     如果我做了1和if,如果只有if语句有效,而else if if什么都没有。

更多信息:我尝试做的是每次函数超时并再次循环时,它将检查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");
    }
}
}

1 个答案:

答案 0 :(得分:0)

对于此用例,您不应该真正依赖try / catch。您可以相当确定XMLHttpRequest或Mircrosoft.XMLHTTP对象将存在,因此您可以将代码简化为以下内容:

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

var xmlHttp = createXmlHttpRequestObject();

如果您想要查看非三元版本,请告诉我