Json 从网络获取值时出现解析错误 api 2

Json Parse Error when getting value from web api 2

我开发了一个简单的 WebAPI 2 应用程序,其中包含此 get 方法:

    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 服务发布在本地主机上。

Web 服务 url:http://192.168.5.154/mobileapi/api/values/2 正在返回

[{"ID":2.0,"TEXT":"test 2"},{"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>

更新您的控制器代码:

  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);  
        }

从这里往上读。 Why is JsonRequestBehavior needed?

Alhamdulillah,这已经解决了。

需要在 Web 服务上启用 CORS。

步骤。 1. 从 Nuget 包安装 Microsoft ASP.NET Web API 2.2...5.2.3 2.在WebApiConfig

中添加config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

我的 Json html 中的代码是:

<!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>

我的网络服务代码是:

   public IHttpActionResult Get(int id)
        {
            var product = db.TESTS.FirstOrDefault((p) => p.ID == id);
            if (product == null)
            {
                return NotFound();
            }
            return Ok(product);         
        }