我试图在我的代码中调用一个简单的方法,将Jquery与Ajax一起使用。但是我每次都会收到404 not found异常。不幸的是,这是一个Web表单解决方案。所以我没有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应用程序中使用它。
JsonResult
如果要在经典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不限于简单的参数类型。您可以使用任何类型作为输入和输出,它将自动进行JSON序列化。