2013-04-23 46 views
-1

我有以下代碼來讀取XML文件。Jquery Get方法不運行成功事件

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

,但該方法不運行成功功能。我也嘗試過使用$ .ajax,但同樣的問題!任何人有同樣的事情?我在這裏做錯了什麼?

請幫幫我!

謝謝!

Uptade:

我使用下面的代碼在另一個函數中調用該函數。

var serviceUrl = getServiceURL("getAllMajorGroups") 
+1

你的XML中的服務名稱在哪裏? – 2013-04-23 11:13:40

+0

這是什麼服務名稱 – swetha 2013-04-23 11:15:50

+0

正如穆罕默德所說 - 認爲服務名稱(在您的JavaScript)應讀取服務標題。 service-name不是在響應中返回的節點 – 2013-04-23 11:20:27

回答

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; 
      } 
}); 
+0

這與這個問題無關! – 2013-04-23 11:16:26

+1

OP的XML沒有服務名稱標籤 - – 2013-04-23 11:17:36

+1

不,它根本不是Dimal。如果它不存在,永遠不會找到服務名稱。 Barmar與xml節點的範圍是正確的,但Mohammed是正確的。 – 2013-04-23 11:19:00

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調用開始時返回,它不會等待響應。

+0

我告訴$ get方法不會執行函數(xml)並跳到最後! – 2013-04-23 11:21:19

+0

這是因爲'$(xml).find(「service-name」)'找不到任何東西,因爲XML中沒有''。 – Barmar 2013-04-23 11:22:23

+1

在'$(xml)'之前放置一個斷點,您會看到該函數執行。 – Barmar 2013-04-23 11:22:49