2

是否有人列出了为什么浏览器会要求保存 JSON 数据文件而不是根据已经存在的功能使用它来更新页面的原因?我让这个工作了一段时间,但突然之间,我做了一些导致它不再工作的事情。我正在使用 asp.net MVC4。

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

如您所见,我已经包含了适当的脚本。

@using (Ajax.BeginForm("SearchByDemographic", "SearchPatients", null, new AjaxOptions { HttpMethod = "POST", LoadingElementId = Url.Content("~/Images/ajax-loader.gif"), OnSuccess = "binddata", OnFailure = "FailAlert" }, new { id = "searchByDemographics" }))

如您所见,我使用 Ajax.BeginForm()。

这是我用来返回 JSON 结果的函数

    [HttpPost]
    public ActionResult SearchByDemographic(SearchByDemographicModel SearchByDemo)
    {
        string UID = HttpContext.User.Identity.Name;
        DataRepository dr = new DataRepository();
        List<SelectListItem> retVal = dr.SearchByDemographic(SearchByDemo, UID);
        if ((retVal == null) || (retVal.Count < 1))
            return Json("Empty Record: No Patient Found", JsonRequestBehavior.AllowGet);
        else
            if(retVal[0].Text.Contains("Error")){
                return Json(new {success = false, nameError = "General Return Exception"}, DataRepository.searchPatientJSonStr(retVal), JsonRequestBehavior.AllowGet);
            }
            else{
                return Json(DataRepository.searchPatientJSonStr(retVal), JsonRequestBehavior.AllowGet);
            }//return PartialView("_RetTable", Json(DataRepository.searchPatientJSonStr(retVal), JsonRequestBehavior.AllowGet));            
    }

这一直发生在我身上。我不知道为什么会发生这种情况。如果我能弄清楚为什么这种情况不断发生,我将来会更好地解决它。

据我所知,浏览器期待 JSON 数据,不知何故,它没有得到它?
另外,这是传回的测试数据的 JSON ......如果有点不对,请原谅我,我试图从 20 个列表中得到一个结果......

"{\"total\":1,\"page\":1,\"records\":1,\"rows\":[{\"id\":11248971,\"cell\":[\"CRAYON \",\" RED \",\" 1956-03-04 \",\" M \",\" 11248971 \",\" 840006723 \",\" 737452545\"]}]}

我确实加载了 unobtrusive-ajax

我仍然总是得到打开文件的提示。

我的退货类型

4

2 回答 2

3

由于名为“显示友好的 JSON 错误”的配置选项,此行为仅存在于 IE 中,如果它小于某个大小(我似乎记得 200 个字符)而不是正常使用

一个可能的解决方案是使用

return Json(result, "text/html");

这将使 IE 行为正确

于 2012-11-22T07:35:01.327 回答
0
              public JsonResult Index()
{
         Models.MyEntities Object = new Models.MyEntities();
        var vperson = Object.Person;
        return Json(vperson, "text/html", behavior:JsonRequestBehavior.AllowGet);
   }
于 2018-04-02T11:21:00.307 回答