2011-03-11 45 views
2

對於Umbraco項目,我試圖做一個簡單的Ajax調用..我不能使用PageMethods,因爲我需要從UserControl內部調用。 試圖通過這樣的Web服務調用做到這一點:從用戶控件內部在Umbraco中進行Ajax調用

Web服務方法:

[System.Web.Script.Services.ScriptService] 
public class MapService : System.Web.Services.WebService 
{ 
    [WebMethod] 
    public static string GetCities(string ProvinceCode) 
    { 
     return "foo"; 
    } 
} 

JS部分在我的ASCX文件:

<script language="javascript" type="text/javascript"> 
    function callServer(src) { 
     MapService.GetCities(src, displayMessageCallback); 
    } 

    function displayMessageCallback(result) { 
     fillDDL(result); 
    } 
</script> 

的問題是,「MapService.GetCitie s「方法不會被調用..

這裏有什麼問題?

或者,有什麼更好的方法來在用戶控件中進行這些類型的Ajax調用?

回答

2

我一直在爲這種事情使用Umbraco基礎REST擴展。我認爲實現起來要簡單得多,如果你在服務器上使用JSON串行器,你甚至可以在客戶端上有適當的JSON對象。

0

我認爲這個問題可能是usercontrol中的javascript沒有與頁面中的scriptmanager進行通信。 我可以看到解決這個問題的兩種方法。 1.使用jQuery調用webmethod而不是asp.net ajax。 2.通過控件javascript調用頁面javascript中的方法,該方法將調用web方法,即使用該頁面作爲代理。這具有使您可以使用頁面方法而不是Web服務的附加優勢。

1

使用REST方法這樣做。我們已經爲我們的項目實施了這個。爲此,您必須編輯restExtensions.config並添加您的條目​​。