XML没有提取结果

时间:2013-07-05 02:55:39

标签: javascript xml wsdl

我正在尝试根据用户的输入通过xml获取结果。

即使应该有结果,它仍然会返回“无结果”。我有一种非常感觉,我只是忽视或遗漏了一些东西。

它应该由用户输入文本工作,并自动提取地址详细信息。

有什么建议吗?我已经尝试过调试并设置了警报,但仍然没有运气。

    <input id="search" />
    <div id="l-s">
        <ul>

        </ul>
    </div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script type="text/javascript">
    $(document).ready(function(){
        $("#l-s li").on("click", function(){
            var val = $(this);
            if(val.attr("adid")){
                window.location.href = "http://map.mywebsite.com/address?addressId="+val.attr("adid")+"&view=data";
            }
        });


        $("#search").on("keypress", function(){

            var _search = $("#search").val();
            var _pc = "";
            var _area = "";

            var toSend = '<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:x="x">'+
   '<soapenv:Header/>'+
   '<soapenv:Body>'+
      '<x:getLocalities soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">'+
         '<address xsi:type="xsd:string">'+_area+'</address>'+
         '<state xsi:type="xsd:string"></state>'+
         '<postcode xsi:type="xsd:string">'+_pc+'</postcode>'+
      '</x:getLocalities>'+
   '</soapenv:Body>'+
'</soapenv:Envelope>';

            if(_search.length >= 2){
                if(!isNaN(_search)){
                    _pc = _search;  
                }else{
                    _area = _search;    
                }
                $.ajax({
                    type: "POST",
                    url: "http://map.mywebsite.com/service",
                    contentType: "text/xml",
                    dataType:"xml",
                    data:toSend,
                    success:function(output){
                        suggestions(output);
                    },
                    error:function(output){
                        suggestions(null);
                    }
                });
            }
        });
    });

    function suggestions(input){
        alert("Called");
        var px = $.parseXML(input);
        var xml = $(px);
        var result = xml.find("Result").children('i');

        if(result.length == 0){
            $("#l-s ul").html("<li>No results</li>");
        }else{
            var results = '';
            $.each(result, function(key, value){
                var l = $(value);
                var address = l.find("address").text();
                var state = l.find("state").text();
                var postCode = l.find("postcode").text();
                var code = l.find("addressId").text();
                results = results + '\n' + '<li adid="'+code+'">'+address + ", "+state+" "+postCode+'</li>';
            });
            $("#l-s ul").html(results);
        }
        $("#l-s").css("display", "inline");
    }
</script>

1 个答案:

答案 0 :(得分:0)

从代码中看,您希望搜索要么是邮政编码,要么是基于数字是否为数字的地址。您希望将其他字段留空。

在把它放在这里之前,不确定你对代码有多少搞砸了。有一些关于toSend的事情。当_area_pc为空字符串时构造它,并且它永远不会再次更新。我会将toSend定义移到$.ajax之前。