问题描述
|
在提交表单按钮之前,我进行了一个$ .getJSON调用以验证一些数据,当它返回时,它显示一个“您未正确填写此表单”对话框,或者它执行该表单。提交()。但是有时候,尤其是在我的慢速测试服务器上,调用回调要花费几秒钟的时间,因此我想展示一些您按下按钮的视觉指示(禁用的按钮,等待的光标等),然后在回调中关闭该视觉指示。但有人告诉我,回调可能不会被调用的可能性很小,但非零。
确保在那种情况下我不会出现非功能性形式的最佳实践是什么?
解决方法
除了
.success
回调(而不是$.getJSON
)之外,您还可以将$.ajax
与.error
回调一起使用。如果请求失败,将触发“ 1”回调。您可以使用它来重新启用并显示合适的消息,类似于投票失败时在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);
}
});
,我只是使用超时。确保enableForm()仅在表单已启用的情况下返回,并在禁用表单时清除超时,以避免运行多个计时器。
setTimeout(enableForm,10000); //在10秒后无论如何启用表格
,您可以在jqXHR Object部分的http://api.jquery.com/jQuery.getJSON/中查看它,它说明函数$ .getJSON()返回实现XMLHTTPRequest的jqXHR Object,因此您将可以使用.error,。成功与完成
我认为这将适合您的情况:
$.getJSON(\"a.json\",function() {}).error(function() {})