我在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);
}
});
});
});
是的,有人能帮帮我吗?
答案 0 :(得分:1)
AJAX调用返回状态代码500
。这绝对是C#代码的错误,而不是JavaScript
状态代码500
表示内部服务器错误。发生任何异常时,ASP.NET应用程序会抛出该代码。查看C#端的日志/控制台输出。
我认为问题出在方法名称中。如果没有另行指定,由于ASP.NET命名约定,您的GetInfo
可以使用GET
方法调用。您使用POST
调用此终结点,尝试将其更改为GET
。
另外,请尝试其他网址组合,例如:
ShowUsers/GetInfo
ShowUsers.aspx/Info
ShowUsers/Info
答案 1 :(得分:0)
创建一个新页面并从该页面接收数据,而不是从asp.net中的同一页面接收 拨打
是错误的package main
import (
"fmt"
"./pokemons"
"./pokeTrainers"
)
func main() {
fmt.Printf("ERROR CIRCULAR IMPORT")
尝试使用新页面
`"ShowUsers.aspx/GetInfo";`
并确保您的网址应该像
`showUsersAjax.aspx'`
试试这个
var url = "http://www.doamin.com/ShowUsers.aspx/GetInfo";
假设ShowUsers是控制器,GetInfo就是动作 另外,在API中添加POST签名。
答案 2 :(得分:0)
由于您未在JavaScript中附上电子邮件地址字符串inside quotes,因此您的JSON无效。
编程证明这会导致服务器端异常:
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; }
}
服务器端异常表现为内部服务器错误,代码500
。您应该能够在Windows事件查看器中看到异常详细信息。
所以在JavaScript中只需将电子邮件地址包装在引号中:
data: "{ email : '" + email + "' }",
另请注意,您的Web方法正文所需的只是
public static User GetInfo(string email) {
return UserService.GetUser(email);
}
即。 you do NOT need to spin up a serializer yourself。框架根据请求标头选择并旋转必要的序列化程序(JSON或XML)。