在提交表单按钮之前,我进行$ .getJSON调用以验证某些数据,当它返回时,它会显示“您没有正确填写此表单”对话框,或者它会执行表单。提交()。但有时候,特别是在我的慢速测试服务器上,调用回调需要几秒钟,所以我想提出你按下按钮的一些视觉指示(禁用按钮,等待游标等),以及然后关闭回调中的视觉指示。但是我被告知有一个小但非零的机会可能不会调用回调。
确保在这种情况下,我最终没有使用非功能性表格的最佳做法是什么?
答案 0 :(得分:4)
我只是使用超时。如果表单已经启用,请确保enableForm()返回,并在禁用表单时清除超时,以避免运行多个计时器。
setTimeout(enableForm,10000); //在10s之后的任何情况下启用表格
答案 1 :(得分:4)
除了.error
回调而不是.success
之外,您还可以$.ajax
使用$.getJSON
回调。如果请求失败,则会触发.error
回调。您可以使用它来重新启用和显示合适的消息,类似于投票失败时StackOverflow上显示的消息。例如:
$.ajax({
url: "test.html",
dataType: "json",
success: function(html){
$form.submit();
},
error: function(xhr, error){
console.debug(xhr);
console.debug(error);
$form.find(":input").attr("disabled", false);
}
});
答案 2 :(得分:2)
你可以在jqXHR对象部分看这里http://api.jquery.com/jQuery.getJSON/,它解释了函数$ .getJSON()返回一个实现XMLHTTPRequest的jqXHR对象,这样你就可以得到.error,.success和.complete
我认为这适用于您的情况:
$.getJSON("a.json", function() {}).error(function() {})