3

大家好,我有一个网页,它使用 Jquery 将数据从对话框发送到使用 $.ajax 的 asp.net 方法,但它总是给我一个 404 错误网页未找到。

Ajax 将此链接提供给请求“Localhost:1395/Login.aspx/sendEmail”(使用 firebug 获得),但发送电子邮件是应该在 Login.aspx 页面中调用的方法。

这是 JQuery 代码:

   $.ajax({
       type: 'POST',
       url: 'Login.aspx/sendEmail',
       data: '{"strEmail":"' + $('#hplForgotDialog').find('input[id$=txtForgotEmail]').val() + '"}',
       contentType: "application/json; charset=utf-8",
       dataType: "json"
   });

对这个问题的任何帮助都会非常感激。

编辑:为了进一步演示错误,我将添加一个描述 URL 错误的图像,以使其尝试连接。

在此处输入图像描述

4

3 回答 3

1

尝试这个:-

$.ajax({
  type: "POST",
  url: "Login.aspx/sendEmail",
  data: '{"strEmail":"' + $('#hplForgotDialog').find('input[id$=txtForgotEmail]').val() + '"}',
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Your code.
  }
});
于 2013-08-20T16:52:36.587 回答
1

我的猜测是,您需要设置路由。你可以在这里阅读:http: //msdn.microsoft.com/en-us/library/cc668201.ASPX

基本上,如果我是对的(我可能不是),您的路由找不到正确的操作(或在非 MVC 场景中调用的任何操作)。在 Web 窗体中,您必须在 Global.asax 文件中的 Application_Start 事件处理程序中设置自定义路由。

像这样的东西:

protected void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute("",
        "Category/{action}/{categoryName}",
        "~/categoriespage.aspx");
}

这样,您就可以告诉应用程序如何理解 URL 及其参数。这是 url /Category/param1/param2,所有与此模式匹配的内容都将被定向到 categoriespage.aspx 页面,可以对参数进行任何操作(例如调用正确的方法)。

于 2013-08-21T14:01:08.900 回答
0

我假设您使用的是 asp.net webforms 而不是 mvc。因此,您必须在 Login.aspx.cs 文件中创建以下方法(我假设为 Login 类):

[WebMethod()]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public static object sendEmail(string strEmail)
{
  return new { emailSent = true};
}

标准:
- 方法必须是静态
的 - 属性是必需的(如果您不希望返回 json,还有其他格式)
- 方法和参数名称来自 $.ajax 请求,因此如果您更改,您应该更改那个也是。

于 2013-08-22T09:20:00.030 回答