我的问题是调用OnFailure回调的条件是什么,运行时如何知道ajax调用失败(ajax帮助程序使用一些http响应状态代码来指示它会是什么呢?)。 如果更新UpdateTargetId的html,无论ajax调用失败还是成功,那么我应该如何正确处理错误呢。很困惑......
答案 0 :(得分:18)
<script type="text/javascript">
function OnSuccess() {
alert('Success');
}
function OnFailure(ajaxContext) {
var response = ajaxContext.get_response();
var statusCode = response.get_statusCode();
alert('Failure');
Here you can do whatever you want with the div.
$('#targetDiv').empty();
}
</script>
<div id="targetDiv">
@using (Ajax.BeginForm("Index", "Home",
new AjaxOptions
{
UpdateTargetId = "targetDiv",
OnSuccess ="OnSuccess",
OnFailure ="OnFailure"
})
{
...
}
</div>
答案 1 :(得分:4)
似乎在ASP.NET MVC 4中,事情发生了一些变化。我必须使用以下属性来读取响应和状态:
ajaxContext.responseJSON
ajaxContext.responseText
ajaxContext.status
ajaxContext.statusText
答案 2 :(得分:3)
根据官方MSDN网站: 如果响应状态不在200范围内,则调用此函数。
答案 3 :(得分:0)
AjaxOptions中的OnFailure查找JavaScript函数
<script>
function onError(ajaxContext) {
var response = ajaxContext.get_response();
var statusCode = response.get_statusCode();
alert("Error occured. Status code = " + statusCode);
}
</script>
在HTML中写这个以便在出现错误时获得警报。
<div id="updateDiv">
@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "Post", InsertionMode = InsertionMode.Replace, UpdateTargetId = "updateDiv", OnFailure = "onError" }))
{
@*Your HTML form code goes here.*@
}
</div>