我有以下代码来读取XML文件。
function getServiceURL(serviceName) {
$.get("/xml/ServiceUrls.xml", function(xml){
$(xml).find("service-name").each(function(){
if($("service-name").text() == serviceName){
var url = $("service-name").parent().find("service-url").text();
return url;
}else{
return null;
}
});
});
}
xml文件看起来像这样!
<service>
<service-title>getAllMajorGroups</service-title>
<service-url>localhost:9157/getAllMajorGroups</service-url>
<service-description>Web service to retrieve item major groups</service-description>
</service>
当我运行应用程序时,get查询的响应成功。
但该方法不运行success函数。我尝试了$ .ajax,但同样的问题!是谁有同样的事情?我在这里做错了什么?
请帮助我!
谢谢!
Uptade:
我使用以下代码在另一个函数中调用该函数。
var serviceUrl = getServiceURL("getAllMajorGroups")
答案 0 :(得分:0)
您认为service-name
不应该是service-title
-
$(xml).find("service-title").each(function(){
if($(this).text() == serviceName){
var url = $(this).parent().find("service-url").text();
return url;
}else{
return null;
}
});
答案 1 :(得分:0)
当你在循环中编写$("service-name")
时,它会查找常规DOM,而不是下载的XML。您需要使用$(this)
来获取.each()
正在处理的元素。
function getServiceURL(serviceName) {
$.get("/xml/ServiceUrls.xml", function(xml){
alert ("success!"+xml);
$(xml).find("service-name").each(function(){
if($(this).text() == serviceName){
var url = $(this).parent().find("service-url").text();
return url;
}else{
return null;
}
});
});
}
我也不确定你期望return url
做什么。 each()
对迭代函数返回值的唯一作用是检查它是否为false
- 如果是,则迭代停止。你不能以这种方式从getServiceURL()
返回一个值,因为$.get
是异步的 - 它在AJAX调用开始时返回,它不等待响应。