当jQuery返回错误时,如何在jQuery中重新发送ajax请求
How do I resend an ajax request in jQuery when it returns an error?
我的javascript中有一个ajax请求,它正在向Rails控制器发送数据。如果控制器发现数据与数据库中已有的信息重复,则返回"不可处理实体"错误。
我想打开一个对话框,询问用户是否确定要插入重复信息。如果用户同意,我想向数据对象添加另一个密钥,然后重试请求。添加的密钥将是一个忽略重复检查并插入数据的标志。
$.ajax({
url: '/url',
type: 'post',
data: this.buildData(),
success: function() {
bootbox.alert('Information added', function() {
Backbone.history.loadUrl();
}.bind(this)
);
}.bind(this),
error: function(jqXHR, textStatus, errorThrown) {
if(errorThrown === 'Unprocessable Entity') {
bootbox.confirm('Do it anyway?', function(confirm) {
if(confirm) {
/*Here I want to add another key to the data object and resend the request*/
}
}.bind(this)
);
}
}.bind(this)
});
我该如何做这件事,或者更好的是,有更好的方法来完成我想要完成的事情吗?
首先,我确信有一些插件可以实现这一点。
但是如果没有合适的插件,你总是可以做这样的
function dispatchAjax( options ){
options = $.extend({},options);
var data = $.extend({}, this.buildData(), options.data );
$.ajax({ ... ,
error : function( ) { ....
if ( typeof(options.retry) == "function" ){
var retryFunc = options.retry;
options.retry = null;
options.data = { "extraKey":"extraValue"};
dispatchAjax( options );
}
});
}
给我一些时间来确保它正常运行,并给出完整的代码
您可能感兴趣的另一种方法是使用同步调用。JQuery的ajax请求中的{"async":false}
。
我知道这似乎违背了目的,但我发现它对服务器端验证非常有用,所以它可以满足你的需求,你不必像我上面展示的那样处理复杂的处理程序,它只是这样的:
var result = dipatchRequest( options, /*async*/ false, /*ignore-duplicates*/ false );
if ( result.error && confirm(..) ){
dispatchRequest(options, true, true);
}
相关文章:
- 用jquery post发送jquery对象
- 将jQuery参数发送到服务器端并创建输出文本文件
- 接收jquery函数发送的php文件上的数据
- jQuery-新窗口上的选择器
- Jquery新元素在连接时导致[对象对象]
- php表单提交,用于phpmailer使用jquery ajax发送邮件
- 如何在 JavaScript 或 jQuery 中发送一个简单的数字并在 URL 中接收
- 无法将 Slickgrid 的标头与 Jquery 新版本分组
- 在Jquery中发送带有推文按钮点击的随机报价
- 使用 jquery 提交表单后,Jquery 不发送帖子链接
- jQuery:新的临时 DOM 元素的内存管理
- 将jquery数据发送到struts操作
- Ext.Ajax.request 发送 OPTIONS 请求跨域,当 jQuery.ajax 发送 GET 时
- 使用 Ajax/jQuery/PHP 发送联系表单数据
- 将多维数组从 JQuery AJAX 发送到 PHP
- 如何通过jquery正确发送php中的JSON
- 将 2D 数组 jQuery Post 发送到 Java Servlet
- Python服务器不接受jquery ajax发送的JSON
- 如何将AJAX/Jquery对象发送到Controller(差异)MVC4
- Php为什么不't向Jquery ajax发送响应