gpt4 book ai didi

jQuery.getJSON 调用 ASP.NET 方法

转载 作者:行者123 更新时间:2023-12-03 23:04:29 25 4
gpt4 key购买 nike

我有 jQuery 代码从服务器获取 JSON:

 $(document).ready(function () {
$.getJSON('Default2.aspx/GetPerson', { 'firstname': 'brian', 'lastname': 'lee' }, function (response) {
alert(response.Age);
});
});

默认2.aspx代码:

    [WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static String GetPerson(String firstname, String lastname)
{
Person p = new Person(firstname, lastname);
return "{\"Age\":\"12\"}";
}

问题是:

为什么我的脚本没有调用 GetPerson 方法?我在 GetPerson 中附加了调试器,但它似乎没有被调用。

如有任何帮助,我们将不胜感激!

最佳答案

WebMethod 默认情况下响应 POST 而不是 GET 请求。

$.ajax({
type: 'POST',
url: 'Default2.aspx/GetPerson',
dataType: 'json',
// ...
});

并且,请求格式也应该是 JSON 以匹配 ResponseFormat:

// ...
data: JSON.stringify({ 'firstname': 'brian', 'lastname': 'lee' }),
contentType: 'application/json'
<小时/>

或者,可以将 ScriptMethod 配置为使用 GET:

[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]

但是,仍然需要为其设置contentType,因此无法使用$.getJSON():

$.ajax({
type: 'GET',
url: 'Default2.aspx/GetPerson',
dataType: 'json',
contentType: 'application/json',
// ...
});

并且,data 将进行 URL 编码,但在此之前每个值都需要进行 JSON 编码:

// ...
data: {
firstname: JSON.stringify('brian'),
lastname: JSON.stringify('lee')
}
<小时/>

另请注意,ScriptMethod 会将其响应包装在 { "d": ... } 对象中。并且,由于返回值是String,因此“d”的值是相同的未解析的String:

// ...
success: function (response) {
response = JSON.parse(response.d);
alert(response.Age);
}

关于jQuery.getJSON 调用 ASP.NET 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20185162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com