MVC JsonResult无法使用chrome

MVC JsonResult not working with chrome?

本文关键字:chrome JsonResult MVC      更新时间:2023-09-26

我希望jquery从我的MVC控制器中获取JsonResult,但它没有接收到任何数据!

如果我把输出放在一个文本文件中并输入它的链接,它就可以工作了,所以我认为我的jQuery很好。

然后我用chrome等其他浏览器进行测试,结果一无所获。请求的页面只是emtpy。。没有错误。此外,IE似乎在接收我的字符串时出现问题。。只有firefox显示字符串,但为什么?

    public JsonResult jsonLastRequests()
    {
        List<Request> requests = new List<Request>();
        while (r.Read())
        {
            requests.Add(new Models.Request()
            {
                ID = (int)r[0],
                SiteID = r[1].ToString(),
                Lat = r[2].ToString(),
                City = r[4].ToString(),
                CreationTime = (DateTime)r[5]
            });
        }
        r.Close();
        return Json(requests);
    }

我发现,如果我想将JSON作为字符串返回,它也不起作用!它现在在所有浏览器中都可以使用字符串。。但是jQuery仍然没有加载任何

        var url = "http://../jsonLastRequests";
        var source =
        {
            datatype: "json",
            datafields: [
                { name: 'ID' },
                { name: 'SiteID' },
                { name: 'Lat' },
                { name: 'CreationTime' },
                { name: 'City' },
            ],
            id: 'id',
            url: url
        };
        var dataAdapter = new $.jqx.dataAdapter(source, {
            downloadComplete: function (data, status, xhr) { },
            loadComplete: function (data) { },
            loadError: function (xhr, status, error) { }
        });

我通过添加以下内容解决了问题:访问控制允许来源:*

 public HtmlString jsonLastRequests()
    {
        List<Request> requests = new List<Request>();
        while (r.Read())
        {
            requests.Add(new Models.Request()
            {
                ID = (int)r[0],
                SiteID = r[1].ToString(),
                Lat = r[2].ToString(),
                City = r[4].ToString(),
                CreationTime = (DateTime)r[5]
            });
        }  r.Close();
 System.Web.Script.Serialization.JavaScriptSerializer jSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();

            return new HtmlString(jSerializer.Serialize(requests ));}

我也做过类似的方法

  $.ajax({
        type: 'POST',
        url: '/home/GetSurvey',
        data: {
            XmlPath: $("#xmlpath").val()
        },
        dataType: 'json',
        success: function (jsonData) {
            jsonStringQuestionaire = jsonData;
            LoadSurvey();
        },
        error: function () {
            alert('Error loading ' + id);
        }
    });
 questionaireJsonList = eval(jsonStringQuestionaire);