我有一个jquery脚本,用于搜索生成XML文件的php文件。 XML文件示例在这里
<sites>
<name>Ascot Racecourse</name>
<address1>Berkshire</address1>
<postcode>SL5 7JX</postcode>
<name>Aston Villa Football Club</name>
<address1>Villa Park</address1>
<postcode>B6 6HE</postcode>
<name>Asda 1 Year Celebration</name>
<address1>Park In Ipswich</address1>
<postcode>IP</postcode>
<name>ASDA FULWOOD</name>
<address1>ASDA FULWOOD</address1>
<postcode>ASDA</postcode>
<name>ASDA TEST 5</name>
<address1>ASDA TEST 5</address1>
<postcode>ASDA TES</postcode>
<name>ASDA 50</name>
<address1>ASDA 50</address1>
<postcode>ASDA 50</postcode>
</sites>
我的JQ脚本运行正常,并使用以下
获取所有数据 $(document).ready(function(){
$.ajax({
type: "GET",
url: "search_action.php" + string ,
dataType: "xml",
success: disxml });
})
} // function
function disxml(data){
$(data).find('sites').each(function(row) {
var name = $(this).find('name').text();
var add1 = $(this).find('address1').text();
display += "<b>" + name + "</b> - " + add1 + "<br>" ;
})
divbox.html(display) ; // draw contents
}
我很高兴在浏览器中检查XML文件,结果很好但是问题是变量'display'的值我希望在xml文件中的每个名称和地址后面有一个换行符的有序列表,但我得到的是所有地址后跟的所有名称。我相信脚本正在通过一个循环,应该做我想要的但它只是没有
如果它有助于这是'display'的值
Ascot RacecourseAston Villa Football ClubAsda 1年CelebrationASDA FULWOODASDA TEST 5ASDA 50-BerkshireVilla ParkPark in IpswichASDA FULWOODASDA TEST 5ASDA 50
有人能告诉我,我做错了吗?
提前致谢
米克
答案 0 :(得分:3)
这是因为你正在做以下事情:
$(data).find('sites').each(function(row) {
var name = $(this).find('name').text();
var add1 = $(this).find('address1').text();
display += "<b>" + name + "</b> - " + add1 + "<br>" ;
})
您正在遍历每个sites
节点,其中有一个节点,并在其中获取所有名称节点,然后获取所有这些节点的文本。为了使它像你期望的那样工作,你必须修改你的XML:
<sites>
<site>
<name>Ascot Racecourse</name>
<address1>Berkshire</address1>
<postcode>SL5 7JX</postcode>
</site>
<site>
<name>Aston Villa Football Club</name>
<address1>Villa Park</address1>
<postcode>B6 6HE</postcode>
</site>
<!-- etc... -->
</sites>
并执行以下操作:
$(data).find('sites').find('site').each(function(row) {
var name = $(this).find('name').text();
var add1 = $(this).find('address1').text();
display += "<b>" + name + "</b> - " + add1 + "<br>" ;
})