ASP.NET WebMethod 收到 JSON 字符串?
ASP.NET WebMethod receive JSON string?
我正在尝试通过 ajax 使用 JSON 字符串调用 WebMethod,如下所示:
let jsonData = JSON.stringify({test: "Test"});
$.ajax({
type: "POST",
url: "WebForm.aspx/DoStuff",
data: '{data: "' + jsonData + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
}
});
但是,我收到 HTTP 500 内部错误。
我想解析 WebMethod 中的 JSON 字符串,因为我不知道运行时的值。 WebMethod 如下所示:
[WebMethod]
public static string DoStuff(string data)
{
var keyValuePairs = JsonConvert.DeserializeObject<Dictionary<string, string>>(data);
foreach (var key in keyValuePairs.Keys)
{
...
}
return ...
}
如果您使用的是 newtonsoft,请尝试将 json 数据解析为 JObject,如果您想在 .net core 3 中使用 Microsoft 的 Json 库,请尝试解析为 JSONDocument System.Text.Json
https://www.newtonsoft.com/json/help/html/ParseJsonObject.htm
示例使用 System.Text.Json
using (JsonDocument jsonDoc = JsonDocument.Parse(data))
{
JsonElement root = jsonDoc.RootElement;
JsonElement dataEl = root.GetProperty("Data");
var testEl = dataEl.GetProperty("Test")
...
}
好的,问题出在 ajax 请求中的数据格式。以下有效:
let jsonData = JSON.stringify({test: "Test"});
let data = { data: jsonData };
$.ajax({
type: "POST",
url: "SomePage.aspx/DoStuff",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
}
});
我正在尝试通过 ajax 使用 JSON 字符串调用 WebMethod,如下所示:
let jsonData = JSON.stringify({test: "Test"});
$.ajax({
type: "POST",
url: "WebForm.aspx/DoStuff",
data: '{data: "' + jsonData + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
}
});
但是,我收到 HTTP 500 内部错误。
我想解析 WebMethod 中的 JSON 字符串,因为我不知道运行时的值。 WebMethod 如下所示:
[WebMethod]
public static string DoStuff(string data)
{
var keyValuePairs = JsonConvert.DeserializeObject<Dictionary<string, string>>(data);
foreach (var key in keyValuePairs.Keys)
{
...
}
return ...
}
如果您使用的是 newtonsoft,请尝试将 json 数据解析为 JObject,如果您想在 .net core 3 中使用 Microsoft 的 Json 库,请尝试解析为 JSONDocument System.Text.Json
https://www.newtonsoft.com/json/help/html/ParseJsonObject.htm
示例使用 System.Text.Json
using (JsonDocument jsonDoc = JsonDocument.Parse(data))
{
JsonElement root = jsonDoc.RootElement;
JsonElement dataEl = root.GetProperty("Data");
var testEl = dataEl.GetProperty("Test")
...
}
好的,问题出在 ajax 请求中的数据格式。以下有效:
let jsonData = JSON.stringify({test: "Test"});
let data = { data: jsonData };
$.ajax({
type: "POST",
url: "SomePage.aspx/DoStuff",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
}
});