-1

我有以下代码来读取 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 查询的响应是成功的。

在此处输入图像描述

但该方法不运行成功功能。我也尝试使用 $.ajax 但同样的问题!有人有同样的东西吗?我在这里做错什么了吗?

请帮我!

谢谢!

更新:

我使用以下代码在另一个函数中调用该函数。

var serviceUrl = getServiceURL("getAllMajorGroups")
4

2 回答 2

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;
            }
});
于 2013-04-23T11:14:38.267 回答
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 调用开始时返回,它不等待响应。

于 2013-04-23T11:15:37.383 回答