【发布时间】:2011-12-06 13:23:17
【问题描述】:
我正在尝试从 MVC 应用程序返回 Json 数据。我使用 Fiddler 和 FireBug 来解决这个问题,Json 数据似乎没问题,但由于某种原因,数据仍然没有显示。这是我的代码:
public class CalendarController : Controller
{
public JsonResult ReturnCalendarEvents()
{
var model = _service.EventList("JackV", "10/1/2011", "10/8/2011");
return Json(model, JsonRequestBehavior.AllowGet);
}
}
Site.Master
$.ajax({
type: "POST",
async: false,
contentType: "application/json; charset=utf-8",
url: "/Calendar/ReturnCalendarEvents",
data: "{'UserName':'" + UserName + "','starTime':'" + start.format("isoDateTime") + "','endTime':'" + end.format("isoDateTime") + "'}",
dataType: "json",
success: function (result) {
//Logic goes here
},
error: function (e) { alert("An Error Occured" + e); }
});
因此,即使在 Fiddler 中我看到返回的实际 Json 数据,在 Site.Master 文件中,这也会直接导致错误。返回的错误是 [Object object]。不太有帮助。我调试了我的应用程序,在数据作为 Json 返回之前没有任何错误。除非数据不是真实的 Json,但它确实看起来像。
奇怪的是,ajax 函数运行,然后直接出错,然后我进入我的控制器的 Visual Studio 代码,然后它返回到这个 ajax 函数但这次它确实出错了,它转到成功代码。一路上的某个地方,它停止在 FireBug 中调试,我不确定为什么没有返回数据。
谁能想到任何可以帮助我解决这个问题的方法?谢谢。
解决办法:看了大家的cmets后才发现这条线是错的:
var schedules = (eval(result.d));
这是我的成功逻辑的一部分,我没有包含在帖子中。在 FireBug 结果中显示数据,但 .d 为空。这在 Web 应用程序中工作得很好,但它不喜欢 MVC 应用程序中的 .d。我将代码更改为此,现在它工作正常。我仍然不知道为什么该函数被命中两次,第一个出错,但第二个检索数据。我会更多地研究它。
var schedules = (eval(result));
【问题讨论】:
-
服务器返回的 JSON 长什么样?我还可以问一下,为什么你将
async标志设置为false?此外,您似乎在向控制器操作的请求中发送了一些 JSON 数据,但您显示的操作似乎根本没有任何参数。另一个问题:如果用户名包含单引号怎么办? -
启动调试会话并在控制器操作上设置断点。很有帮助。
标签: asp.net-mvc json jquery