C# 从web api 2获取值时出现Json分析错误
我开发了一个简单的WebAPI 2应用程序,其中包括以下get方法:C# 从web api 2获取值时出现Json分析错误,c#,.net,json,asp.net-web-api,asp.net-web-api2,C#,.net,Json,Asp.net Web Api,Asp.net Web Api2,我开发了一个简单的WebAPI 2应用程序,其中包括以下get方法: public HttpResponseMessage Get(int id) { var x = db.TESTS.ToList(); var formatter = new JsonMediaTypeFormatter(); return Request.CreateResponse(HttpStatusCode.OK, x, formatter); }
public HttpResponseMessage Get(int id)
{
var x = db.TESTS.ToList();
var formatter = new JsonMediaTypeFormatter();
return Request.CreateResponse(HttpStatusCode.OK, x, formatter);
}
我查过了。它正在返回Json值。我也在Fiddler登记了
但当我想在一个简单的html文件中检索它时,我得到了一个解析错误。我的Web服务在localhost中发布
Web服务url:正在返回
[{“ID”:2.0,“TEXT”:“test2”},{“ID”:1.0,“TEXT”:“test”}]
这是密码
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Get Json value from WebAPI url</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<script type="text/javascript">
jQuery(document).ready(function ($) {
jQuery.ajax({
type: "GET",
url: "http://192.168.5.154/mobileapi/api/values/2?callback=?",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data, status, jqXHR) {
alert("data is available");
},
error: function (jqXHR, status) {
alert(status);
}
});
});
</script>
</body>
</html>
从WebAPI url获取Json值
jQuery(文档).ready(函数($){
jQuery.ajax({
键入:“获取”,
url:“http://192.168.5.154/mobileapi/api/values/2?callback=?",
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(数据、状态、jqXHR){
警报(“数据可用”);
},
错误:函数(jqXHR,状态){
警报(状态);
}
});
});
更新控制器代码:
using System.Web.Script.Serialization;
[HttpGet]
public JsonResult Get(int id)
{
var ListOfMyObject = db.TESTS.ToList();
JavaScriptSerializer jss = new JavaScriptSerializer();
string output = jss.Serialize(ListOfMyObject);
return Json(output , JsonRequestBehavior.AllowGet);
}
从这里开始读 Alhamdulillah,问题解决了 需要在web服务上启用CORS 步骤。 1.安装Microsoft ASP.NET Web API 2.2。。。5.2.3来自Nuget软件包 2.添加
config.EnableCors(新的EnableCorsAttribute(“*”、“*”、“*”)
我的html Json代码是:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Get Json value from WebAPI url</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<script type="text/javascript">
var getJSON = function (url) {
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('get', url, true);
xhr.responseType = 'json';
xhr.onload = function () {
var status = xhr.status;
if (status == 200) {
resolve(xhr.response);
} else {
reject(status);
}
};
xhr.send();
});
};
getJSON('http://192.168.5.154/mobileapi/api/values/2').then(function (data) {
//alert('Your Json result is: ' + data.result); //you can comment this, i used it to debug
//alert(data.TEXT);
result.innerText ="Oracle Data\nId: " + data.ID + "\nText: "+ data.TEXT; //display the result in an HTML element
}, function (status) { //error detection....
alert('Something went wrong.');
});
</script>
<div id="result" style="color:red"></div>
</body>
</html>
这显示错误:错误1“System.Web.Http.ApiController.Json(System.Net.Http.Formatting.JsonMediaTypeFormatter,Newtonsoft.Json.JsonSerializerSettings)”的最佳重载方法匹配的变量x是否存在无效参数?好的,请尝试代码,我现在返回的是x而不是格式化程序。好的,现在显示此错误:错误1“System.Web.Http.ApiController.Json(string,Newtonsoft.Json.JsonSerializerSettings)”的最佳重载方法匹配'有一些无效参数其他错误:错误2参数2:无法从'System.Web.Mvc.JsonRequestBehavior'转换为'Newtonsoft.Json.JsonSerializerSettings',您在jQuery
代码中的url
似乎是错误的。还可以使用method
而不是type
。这里有什么问题吗?请确保它是相同的url在fiddler中看到时返回。是的,它是相同的url。因为它是一个外部url,所以我添加了?callback=?
public IHttpActionResult Get(int id)
{
var product = db.TESTS.FirstOrDefault((p) => p.ID == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}