我正在尝试根据用户的输入通过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>
答案 0 :(得分:0)
从代码中看,您希望搜索要么是邮政编码,要么是基于数字是否为数字的地址。您希望将其他字段留空。
在把它放在这里之前,不确定你对代码有多少搞砸了。有一些关于toSend
的事情。当_area
和_pc
为空字符串时构造它,并且它永远不会再次更新。我会将toSend
定义移到$.ajax
之前。