WebMethod在ASP.Net Web角色(Web窗体)中不起作用
WebMethod not working in ASP.Net Web Role (Web Forms)?
复制:
- 打开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.aspx.cs 中的WebForm1类
[WebMethod()] public static string Foo(string a) { return a; }
-
将WebRole1项目设置为启动项目并运行。浏览器提醒"未定义"。
但您可以使用普通的ASP.NET WebForm项目获得"webmethod!"。怎么了?
我注意到在url: "WebForm1.aspx/Foo"
中:如果更改aspx部分,ajax就会失败;如果将Foo部分更改为任何值,ajax总是成功的。这不寻常!在纯ASP.NET Web窗体应用程序中,更改任何一部分都将导致"错误"!
如果您创建EmptyASP.NET Web角色,ajax将成功!!!发生了什么事?
JavaScriptSerializer非常灵活,但可能值得在数据参数中尝试有效的JSON,如:
data: '{"a": "webmethod!"}'
我相信JSS会用单引号处理键/值,尽管这在技术上不是有效的JSON,但未加引号的a
可能有点多。
相关文章:
- WebMethod在ASP.Net Web角色(Web窗体)中不起作用
- 将C#变量传递给ASP Web窗体中的JavaScript
- MVC:使用Web窗体视图引擎在javascript中迭代Viewbag数组
- ASP Web 窗体从视图状态中删除类客户端
- 每个会话的 Web 窗体的单个实例
- 如何将任意数量的图像动态添加到源字符串位于数据库中的 Web 窗体
- 在ASP.Net web窗体/MVC中动态加载和添加字段
- 从 GridView 执行 Javascript 函数 ItemTemplate“按钮单击”Web 窗体 ASP.NET
- ASP Web 窗体在条件下触发事件背后的代码
- 在 ASP.NET Web 窗体中从 javascript/客户端设置属性背后的代码
- 从 ASP.NET Web 窗体中的服务器端属性创建 JavaScript 条件
- 在 ASP.NET Web 窗体中显示 HTML 控件的名称(输入类型为“提交”)
- 向 Web 窗体中的控制方法发出 ajax 请求
- 当用户使用 ASP.NET 从 Web 窗体中的“下拉列表列表”中选择“其他”时,文本框的显示方式
- Web 窗体中的 Jquery 对话框
- 如何从 Web 窗体中的超链接显示 asp.net mvc 视图 asp.net
- ASPNET Web 窗体在提交时禁用按钮
- 报表查看器 Web 窗体导致页面挂起
- .NET 4.5 Web 窗体包含 Javascript - 这些文件是什么
- 在asp.net(Web窗体)中使用dropzone.js