按钮点击时我有以下js代码:
$("#processCategories").click(function () {
console.log('HERE');
$.ajax({
url: ajaxUrl, // point to server-side PHP script
data: {action: 'processCategories'},
type: 'post',
done: function () {
console.log('SUCCESS');
//location.reload();
},
fail: function (msg) {
console.log('FAIL');
},
always: function (msg) {
console.log('ALWAYS');
}
});
});
在我的php文件中,我添加了下一行:
header('HTTP/1.0 404 Not found');
die();
我也试过禁止。
因此,控制台记录:HERE
,但不是FAIL
,ALWAYS
我正在使用它:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
弃用注意:自jQuery 1.8起,不推荐使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回调。要准备最终删除的代码,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。
如果我将这些内容重写为error
和complete
,则两者都在运行。
我想念什么?
更新
.done
也不会运行。 success
确实如此。
答案 0 :(得分:4)
您将jqXHR方法与$ .ajax选项混淆。
apex:inputField
返回一个jqXHR对象,并且会有一个失败的方法,所以你可以这样做:
apex:outputField
$.ajax
选项包含处理成功和错误条件的函数:
jqXHR方法具有相同的功能:
答案 1 :(得分:3)
它们遵循jQuery's promises的模式,因此您需要将它们链接到Ajax调用。
$.ajax({
url: ajaxUrl, // point to server-side PHP script
data: {action: 'processCategories'},
type: 'post'
}).done(function () {
console.log('SUCCESS');
//location.reload();
}).fail(function (msg) {
console.log('FAIL');
}).always(function (msg) {
console.log('ALWAYS');
});