У меня есть относительно простой пример страницы 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, это может быть проблемой –
Это сработало! Если вы хотите представить его в качестве ответа, я отметю его как ответ. – Dismissile