Ajax方法调用
我想在我的代码中调用一个简单的方法,在Ajax中使用JQuery。 但是我每次都得到一个404没有发现的exception。 不幸的是,这是一个Web表单解决scheme 所以我没有所有的MVC 🙁
它进入javascript方法,并提供警报,但不会进入我的C#方法。 我以前使用这个Jquery方法的经验是在MVC网站。 它是否与webforms网站兼容?
我的Javascript是:
$(document).ready(function() { $('#btn_<%=UserStuff.tag %>').click(function() { var value = $('#<%#Eval("tag") %>twink').val(); something(value); }); }); function something(theval) { alert(theval); $.ajax({ type: "POST", url: "/Default.aspx/MyMethod?something=" + theval, data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { alert(msg); } }); } }
而我的C#代码是:
public JsonResult MyMethod(string something) { JsonResult ret = new JsonResult(); return ret; }
提前致谢。
你的方法返回JsonResult
。 这是特定的MVC,你不能在webforms应用程序中使用它。
如果您想在传统WebForms应用程序的代码中调用方法,则可以使用PageMethods :
[WebMethod] public static string GetDate() { return DateTime.Now.ToString(); }
然后调用方法:
$.ajax({ type: 'POST', url: 'PageName.aspx/GetDate', data: '{ }', contentType: 'application/json; charset=utf-8', dataType: 'json', success: function(msg) { // Do something interesting here. } });
这是我为你写的一个完整的工作例子:
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Services" %> <script type="text/C#" runat="server"> [WebMethod] public static string SayHello(string name) { return "Hello " + name; } </script> <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="/scripts/jquery-1.4.1.js"></script> <script type="text/javascript"> $(function () { $.ajax({ type: 'POST', url: 'default.aspx/sayhello', data: JSON.stringify({ name: 'John' }), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (msg) { // Notice that msg.d is used to retrieve the result object alert(msg.d); } }); }); </script> </head> <body> <form id="Form1" runat="server"> </form> </body> </html>
PageMethods不限于简单的参数types。 你可以使用任何types的input和输出,它会自动JSON序列化。
你的WebMethod看起来不正确..
一个很好的教程: http : //www.brainbell.com/tutorials/ASP/A_Web_Service_In_ASP.NET.html