【发布时间】:2015-06-07 01:15:56
【问题描述】:
复制:
- 打开VS2013,文件>新建“Azure云服务”项目>添加“ASP.NET Web角色”(命名为WebRole1)
- 为网络角色选择“网络表单”模板。
- 将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.aspx.cs中的WebForm1类中添加如下函数
[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 窗体应用程序中,更改任一部分都会导致“错误”!
如果你创建一个Empty ASP.NET Web Role,ajax 会成功!!!怎么回事?
【问题讨论】:
-
您是否在页面级别启用了页面方法,通过使其成为真的?
标签: javascript asp.net ajax azure webmethod