2015-04-02 52 views
0

攝製:WebMethod不能在ASP.Net Web角色(Web窗體)中使用?

  • 打開VS2013,文件>新建 「Azure的雲服務」 項目>添加 「ASP.NET Web角色」(命名爲WebRole1)
  • 選擇 「Web窗體」 模板Web角色。
  • jquery-1.11.1.min.js和一個新的WebForm1.aspx添加到WebRole1項目中。
  • 下面的代碼添加到WebForm1.aspx的

    <script src="jquery-1.11.1.min.js"></script> 
    <script> 
    $(function() { 
        $.ajax({ 
         type: "POST", 
         url: "WebForm1.aspx/Foo", 
         beforeSend: function (xhr) { 
          xhr.setRequestHeader("Content-type", 
               "application/json; charset=utf-8"); 
         }, 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         data: "{a: 'webmethod!'}", 
         success: function(data) { 
          alert(data.d); 
         }, 
         error: function() { 
          alert("error"); 
         } 
        }); 
    }); 
    

  • 以下函數添加到WebForm1類中WebForm1.aspx.cs中

    [WebMethod()] 
    public static string Foo(string a) 
    { 
        return a; 
    } 
    
  • 集WebRole1項目作爲啓動項目並運行。瀏覽器提醒「未定義」。

但是你可以得到「webmethod!」使用普通的ASP.NET WebForm項目。哪裏不對?


我注意到,在url: "WebForm1.aspx/Foo":如果更改ASPX部分,ajax的失敗;如果您將Foo部分更改爲任何值,那麼ajax總是成功。這是不尋常的!在普通的ASP.NET Web Form應用程序中,更改任一部分都會導致「錯誤」!


如果您創建一個空的ASP.NET Web角色,阿賈克斯會成功!到底是怎麼回事?

+0

您是否已通過將頁面方法設置爲true來啓用頁面方法? – 2015-04-02 09:51:34

回答

1

JavaScriptSerializer是非常靈活的,但它可能是值得的數據參數,試圖有效的JSON,如:

data: '{"a": "webmethod!"}' 

相信JSS會處理在單引號鍵/值,儘管這不是技術上有效的JSON ,但沒有引用a可能有點多。