我已经阅读了
this post,但是我不确定知道使用它从用户那里获取数据.这是我正在使用的ajax jquery.我知道(或至少认为)这不能渲染一部分.但它一直工作,直到渲染失败.我以为可能有帮助.
$.ajax( { type: 'POST',contentType: 'application/json; charset=utf-8',data: "{'test':" + "'" + dateText + "'}",dataType: 'json',url: 'Site/Grab/',success: function (result) { alert('Success'); },error: function (error) { alert('Fail'); } });
这是我的控制器
[HttpPost] public ActionResult Grab(string test) { DateTime lineDate= Convert.ToDateTime(test); List<Info> myInfo= GameCache.Data(lineDate); return PartialView("_PartialView",myInfo); }
解决方法
好的,几件事要尝试:
1)dataType是ajax调用的预期结果.在你的情况下,你发送JSON,但是接收HTML. content-type参数指定请求,你有(和你有什么是正确的).所以数据类型应该是:
dataType: 'html',
2)你需要序列化JSON.尝试抓取轻量级的JSON库并且stringify’ing:
var test = { test: 'testvalue' }; $.ajax { ... data: JSON.stringify(test),... });
比使用quoatations强制JSON字符串要容易得多.创建一个常规的JS变量,然后对其进行字符串化.
你的其他代码看起来不错.
如果这是部分视图本身的HTML /标记问题,请以调试模式运行,并且Visual Studio应该停止在导致问题的标记中.
奖金提示:ASP.NET MVC 3包含内置的JSON模型绑定.因此,您可以创建一个与JSON对象的字段匹配的基本POCO,然后在操作方法中将其接受为强类型对象:
[HttpPost] public ActionResult Grab(MyJsonObject obj) { DateTime lineDate= Convert.ToDateTime(obj.test); List<Info> myInfo= GameCache.Data(lineDate); return PartialView("_PartialView",myInfo); }
由于你唯一发送一个参数,它是过度的 – 但如果你有超过2,那么值得使用JSON POCO.