2
我有一个MVC页面的相对简单的例子,它使用jQuery创建POST来获取一些JSON数据,然后在完成时显示成功/失败消息。该代码在其他浏览器中工作得很好,但在IE7/8中,它似乎失败了4/5次。
这里是MVC查看页:
<asp:Content runat="server" ContentPlaceHolderID="MainContent">
<p id="message"></p>
</asp:Content>
<asp:Content runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery-1.4.1.min.js") %>"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type:"POST",
url: "<%= Url.Action("GetData") %>",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){
$("#message").html("success");
},
error: function(XMLHttpRequest, textStatus, errorThrown){
$("#message").html("error: " + textStatus + "<br/>exception:" + errorThrown);
}
});
});
</script>
</asp:Content>
控制器是非常简单的,以及:
[HttpPost]
public ActionResult GetData()
{
IList<string> people = new List<string>
{
"A",
"B",
"C",
"D",
"E"
};
return Json(people);
}
似乎在IE 4失败了,大约每5倍。我在控制器中放置了一些日志代码,并且每次都调用控制器操作,即使它失败了。有没有人看到我在这里做错了什么?
当它碰到我的错误处理函数时,textStatus被设置为“error”,errorThrown未定义。
尝试使用'{}'(或'null')而不是'“{}”'作为数据。不知道是否这是问题,但发送'“{}”'我不相信会转化为有效的键/值对。编辑:刚刚意识到你发送JSON的动作,但除非你有一个JSON活页夹设置,这可能是问题 – 2010-08-09 22:05:15
这工作!如果您想将其作为答案提交,我会将其标记为已回答。 – Dismissile 2010-08-09 22:08:51