AJAX 请求不适用于 ASP.Net C# - 500 服务器错误

AJAX request not working with ASP.Net C# - 500 server error

我在我的 ASPX 页面 (ShowUsers.aspx) 中尝试了这个页面方法代码,但是该函数给了我一个 500 服务器错误并且没有进入 success 处理程序。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string GetInfo(string email)
{
    JavaScriptSerializer jss = new JavaScriptSerializer();
    User user = UserService.GetUser(email);
    return jss.Serialize(user);
}

以及 JavaScript:

$(document).ready(function() {
  $("#l").click(function() {
    $("#modalUpdate").fadeIn(1000);
    var url = "ShowUsers.aspx/GetInfo";
    var email = "davidizhakinew@gmail.com";

    $.ajax({
      url: url,
      type: "POST",
      data: "{ email : " + email + " }",
      dataType: "JSON",
      contentType: "application/JSON; charset=utf-8",
      success: function(msg) {
        alert("success");
        var data = JSON.parse(msg.d);
        // do stuff (trimmed)
      },
      error: function(msg, xhr) {
        alert(msg + ", " + xhr.responseText);
      }
    });
  });
});

有人可以帮我吗?

创建新页面并从该页面接收数据,而不是从 asp.net 中的同一页面接收数据 调用错误

`"ShowUsers.aspx/GetInfo";`

用新页面试试这个

`showUsersAjax.aspx'`

并确保你的 url 应该像

var url = "http://www.doamin.com/ShowUsers.aspx/GetInfo";

试试这个

var url = "http://www.doamin.com/ShowUsers/GetInfo";

假设 ShowUsers 是控制器而 GetInfo 是操作 此外,在 API.

中添加 POST 签名

AJAX 调用正在返回状态代码 500。这绝对是 C# 代码的错误,而不是 JavaScript.
状态代码 500 表示 内部服务器错误 。 ASP.NET 应用程序在发生任何异常时抛出该代码。查看 C# 端的日志/控制台输出。

我想问题出在方法名上。如果没有另外指定,由于 ASP.NET 命名约定,您的 GetInfo 可以使用 GET 方法调用。您正在使用 POST 调用此端点,请尝试将其更改为 GET

此外,尝试其他 URL 组合,例如:

  • ShowUsers/GetInfo
  • ShowUsers.aspx/Info
  • ShowUsers/Info

您的 JSON 无效,因为您没有在 JavaScript.

中包含 email-address 字符串 inside quotes

这将导致 server-side 异常的程序证明:

void Main()
{
    string email = "davidizhakinew@gmail.com";
    var postback = new Postback { email = email };

    Console.WriteLine(new JavaScriptSerializer().Deserialize<Postback>("{ email : '" + email + "' }")); // email string escaped, ok
    Console.WriteLine(new JavaScriptSerializer().Deserialize<Postback>("{ email : " + email + " }")); // YOUR INPUT, exception Invalid JSON primitive
}

public class Postback
{
    public string email { get; set; }
}

一个 server-side 异常表现为内部服务器错误,代码 500。您应该能够在 Windows 事件查看器中看到异常详细信息。

所以在 JavaScript 中只需将电子邮件地址括在引号内:

data: "{ email : '" + email + "' }",

另请注意,您的网络方法 body 只需要

public static User GetInfo(string email) {
   return UserService.GetUser(email);
}

you do NOT need to spin up a serializer yourself。框架根据请求 headers.

选择并启动必要的序列化程序(JSON 或 XML)