-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")と、ダウンロードされた XML ではなく、通常の DOM が検索されます。$(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 に答える