Jquery Get方法不运行成功事件

时间:2013-04-23 11:11:11

标签: javascript jquery xml xml-parsing

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

enter image description here

但该方法不运行success函数。我尝试了$ .ajax,但同样的问题!是谁有同样的事情?我在这里做错了什么?

请帮助我!

谢谢!

Uptade:

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

var serviceUrl = getServiceURL("getAllMajorGroups")

2 个答案:

答案 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调用开始时返回,它不等待响应。