ASP.net 网站 API 2 AJAX 发送 JSON 和 return JSON
ASP.net Web API 2 AJAX sending JSON and return JSON
net Web API 2. 我想将 JSON 字符串发送到我的 POST 函数之一,然后 return JSON 返回给它.
我的AJAX:
$("#btnPost").click(function (event) {
var sqlQ = "SELECT TOP 50 LTRIM(RTRIM(REPLACE(OID, ' ', ''))) FROM vwPS_DAT WHERE OID != ''";
$.ajax({
type: "POST",
crossDomain: true,
dataType: 'json',
async: true,
cache: false,
contentType: "application/json",
url: "api/FEB/testJSON/",
data: JSON.stringify({ qString: [sqlQ] }),
success: function (result) {
var obj = jQuery.parseJSON(data);
console.log(obj);
},
error: function (xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
$("#txtResult").val(err.Message)
}
});
}
控制者:
[HttpPost]
public string testJSON([FromBody]List<string> qString)
{
System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
Dictionary<string, string> outPut = new Dictionary<string, string>();
var strReturn = ser.Serialize(qString);
var strReturn2 = ser.Deserialize<Dictionary<string, string>>(strReturn);
if (strReturn2["qString"] != "")
{
outPut.Add("query", "correct");
return ser.Serialize(outPut);
}
else
{
outPut.Add("query", "incorrect");
return ser.Serialize(outPut);
}
}
APP_Start:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
config.MapHttpAttributeRoutes();
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.Formatters.Remove(config.Formatters.XmlFormatter);
config.Formatters.JsonFormatter.MediaTypeMappings.Add(new RequestHeaderMapping("Accept", "text/html", StringComparison.InvariantCultureIgnoreCase, true, "application/json"));
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
HTML页:
<body>
<div style="text-align:center">
<h2>AJAX JQuery JSON test</h2>
Please enter Value1 : <input type="number" id="txtValue1" min="1" max="100"><br><br>
Please enter Value2 : <input type="number" id="txtValue2" min="1" max="100"><br /><br>
Result from Math API Service : <input type="text" id="txtResult" disabled /><br /><br>
<input type="button" value="POST" id="btnPost">
</div>
按下 POST 按钮时出现的错误是:
POST http://localhost:53157/Web/api/FEB/testJSON/ 404 (Not Found)
Uncaught SyntaxError: Unexpected token <
那么我还缺少什么,因为它似乎甚至没有找到该功能?
添加 DTO class 并使用:
public class Dto
{
public List<string> qString { get; set; }
}
和控制器:
[HttpPost]
public Dictionary<string, string> testJSON(Dto dto)
{
var outPut = new Dictionary<string, string>();
foreach (string query in dto.qString)
{
string status = query != string.Empty ? "correct" : "incorrect";
outPut.Add(query, status);
}
return outPut;
}
现在您可以更改此代码:
data: JSON.stringify({ qString: [sqlQ] }),
success: function (result) {
var obj = jQuery.parseJSON(data);
console.log(obj);
},
至:
data: JSON.stringify({ qString: [sqlQ] }),
success: function (result) {
console.log(result);
},
net Web API 2. 我想将 JSON 字符串发送到我的 POST 函数之一,然后 return JSON 返回给它.
我的AJAX:
$("#btnPost").click(function (event) {
var sqlQ = "SELECT TOP 50 LTRIM(RTRIM(REPLACE(OID, ' ', ''))) FROM vwPS_DAT WHERE OID != ''";
$.ajax({
type: "POST",
crossDomain: true,
dataType: 'json',
async: true,
cache: false,
contentType: "application/json",
url: "api/FEB/testJSON/",
data: JSON.stringify({ qString: [sqlQ] }),
success: function (result) {
var obj = jQuery.parseJSON(data);
console.log(obj);
},
error: function (xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
$("#txtResult").val(err.Message)
}
});
}
控制者:
[HttpPost]
public string testJSON([FromBody]List<string> qString)
{
System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
Dictionary<string, string> outPut = new Dictionary<string, string>();
var strReturn = ser.Serialize(qString);
var strReturn2 = ser.Deserialize<Dictionary<string, string>>(strReturn);
if (strReturn2["qString"] != "")
{
outPut.Add("query", "correct");
return ser.Serialize(outPut);
}
else
{
outPut.Add("query", "incorrect");
return ser.Serialize(outPut);
}
}
APP_Start:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
config.MapHttpAttributeRoutes();
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.Formatters.Remove(config.Formatters.XmlFormatter);
config.Formatters.JsonFormatter.MediaTypeMappings.Add(new RequestHeaderMapping("Accept", "text/html", StringComparison.InvariantCultureIgnoreCase, true, "application/json"));
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
HTML页:
<body>
<div style="text-align:center">
<h2>AJAX JQuery JSON test</h2>
Please enter Value1 : <input type="number" id="txtValue1" min="1" max="100"><br><br>
Please enter Value2 : <input type="number" id="txtValue2" min="1" max="100"><br /><br>
Result from Math API Service : <input type="text" id="txtResult" disabled /><br /><br>
<input type="button" value="POST" id="btnPost">
</div>
按下 POST 按钮时出现的错误是:
POST http://localhost:53157/Web/api/FEB/testJSON/ 404 (Not Found)
Uncaught SyntaxError: Unexpected token <
那么我还缺少什么,因为它似乎甚至没有找到该功能?
添加 DTO class 并使用:
public class Dto
{
public List<string> qString { get; set; }
}
和控制器:
[HttpPost]
public Dictionary<string, string> testJSON(Dto dto)
{
var outPut = new Dictionary<string, string>();
foreach (string query in dto.qString)
{
string status = query != string.Empty ? "correct" : "incorrect";
outPut.Add(query, status);
}
return outPut;
}
现在您可以更改此代码:
data: JSON.stringify({ qString: [sqlQ] }),
success: function (result) {
var obj = jQuery.parseJSON(data);
console.log(obj);
},
至:
data: JSON.stringify({ qString: [sqlQ] }),
success: function (result) {
console.log(result);
},