我有3个功能。一个用于以下每种情况:
我不太确定两件事:
这些的正确属性名称3.我使用beforeSend:
,success:
和failure:
为这些3调用处理程序的正确方法。
这就是我所拥有的:
<script type="text/javascript">
$('.icon.delete.cosponsor').click(function () {
var divId = $(this).attr("data-attr-divid");
var recordId = $(this).attr("data-attr-id");
$("#" + divId).fadeOut(300, function () { $("#" + divId).remove(); });
//Delete a record
$.ajax({
type: "POST",
url: '/Path/To/Action',
data: queryStr,
dataType: 'json',
beforeSend: OnBegin(),
success: OnSuccess(data),
failure: OnFailure(data),
timeout: 5000
});
});
/***********************************************
AJAX Callback Handlers
***********************************************/
function OnBegin() {
$('#loading-area').show();
}
function OnSuccess(data) {
$('#loading-area').hide();
$.notification({
content: 'Information saved successfully.' + data,
error: false,
timeout: 10000
});
}
function OnFailure(request, error) {
$('#loading-area').hide();
$('#ValidationResultsArea').show();
$.notification({
content: 'Error saving data.',
error: true,
timeout: 10000
});
}
</script>
答案 0 :(得分:2)
你应该传递对函数的引用,而不是调用函数,看看:
$('.icon.delete.cosponsor').click(function () {
var divId = $(this).attr("data-attr-divid");
var recordId = $(this).attr("data-attr-id");
$("#" + divId).fadeOut(300, function () { $("#" + divId).remove(); });
//Delete a record
$.ajax({
type: "POST",
url: '/Path/To/Action',
data: queryStr,
dataType: 'json', // <<<<< dataType != datatype
beforeSend: OnBegin, // <<<<<
success: OnSuccess, // <<<<<
failure: OnFailure, // <<<<<
timeout: 5000
});
});
答案 1 :(得分:0)
这不是失败它是“错误”http://api.jquery.com/Ajax_Events/
答案 2 :(得分:0)
这是部分答案。我认为成功和失败的使用不太常见,许多人正在使用以下回调。
$.ajax({
type: "POST",
url: "callbacktestbackend.php",
dataType : 'json' })
.done(function(data, textStatus, jqXHR){
console.log(data,
textStatus,
jqXHR.responseText);
})
.fail(function(jqXHR, textStatus, errorThrown){
console.log
(jqXHR.responseText,
textStatus,
errorThrown);
})
.always(function(data, textStatus, jqXHR){
console.log(data,
textStatus,
jqXHR);
});
您可以混合和匹配您想要使用的那些,并根据需要将代码添加到该功能。
来自jQuery ajax页面: 弃用注意:自jQuery 1.8起,不推荐使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回调。要准备最终删除的代码,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。