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)
我在我的 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)