2012-12-29 33 views
0

我正在ASP.NET網站上工作,我需要從外部網址獲取XML。它使用ASP.NET MVC的XmlDocument效果很好,但現在我需要解析XML而無需再次訪問服務器,所以客戶端。我想要做的一個例子:在ASP.NET MVC 4網站客戶端閱讀XML

假設我們有3 <select>下拉列表,第一個包含所有汽車模型,第二個包含所有汽車模型,第三個包含所有類型。所以,當頁面加載時,我們有第一個下拉所有carmakes,其他兩個禁用。當我選擇一個品牌時,我想加載所有型號的所選的品牌(下拉第3號仍然禁用)。那麼當我選擇一款車型時,我想加載所有型號的所選車型

所有的make都可以通過ASP.NET的XmlDocument加載,它已經可以正常工作了,但其他數據需要在客戶端解析。我試過這個使用jQuery:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function(){ 
       $.ajax({ 
        type: "GET", 
        url: "-- hidden --", 
        dataType: "xml", 
        success: parseXml 
       }); 

       function parseXml(xml){ 
        $(xml).find("Make").each(function(){ 
         $("#output").append($(this).find("carmake").text() + "<br />"); 
        }); 
       } 
      }); 
     </script> 
    </head> 
    <body> 
     <div id="output"></div> 
    </body> 
</html> 

但這並不行。我讀了很多問題,其中污染物使用crossDomain: truedataType: jsonp,但這也不起作用。我也讀過服務器,我得到的XML需要支持jsonp,但我無法做到這一點,因爲它不是我的服務器,而是一個web服務。

正如您可能已經看到的,獲取所有產品的樣本url是-- hidden --/make.alx。然後,當用戶選擇了一個make,我可以通過在url中發送carcode來獲得make的模型,例如:-- hidden --/model.alx?carcode=2

所以簡而言之,問題是:如果可能,我怎樣才能使用jQuery來處理這個問題,如果不是的話,我怎樣才能以另一種方式工作?我有一個很好的方式來使用ASP.NET MVC做到這一點,但沒有重新加載整個頁面?

This網站是我想要的一個很好的例子。正如你可以在標題下看到的那樣,你可以選擇汽車品牌,型號和類型。

在此先感謝!

回答

1

不可能通過jQuery,但你可以在你的網站上創建一個代理頁面。

+0

感謝您的回答。好的,代理頁面對我來說是新事物,請你解釋一下如何做到這一點? – avb

+0

對不起,使用代理字,在你的網站創建簡單的頁面,這個頁面訪問外部xml和jquery ajax將訪問您的網站的頁面。 –

0

好吧,對於那些正在苦苦掙扎的人,這裏是我如何解決這個問題,這要感謝@GovindKamalaPrakashMalviya。他把我推向了正確的方向,我搜索了一會兒,終於發現它必須用JSON搜索完成,並最終通過this網站找到了它。很棒!感謝Govind!