Javascript ajax完全回调函数从不被调用
我用的是Django 我有以下代码Javascript ajax完全回调函数从不被调用,javascript,jquery,ajax,django,Javascript,Jquery,Ajax,Django,我用的是Django 我有以下代码 var done_cancel_order = function(res, status) { alert("xpto"); }; var cancel_order = function() { data = {}; var args = { type:"GET", url:"/exchange/cancel_order/"+this.id, data:data, complete:done_cancel_orde
var done_cancel_order = function(res, status) {
alert("xpto");
};
var cancel_order = function() {
data = {};
var args = {
type:"GET",
url:"/exchange/cancel_order/"+this.id,
data:data,
complete:done_cancel_order
};
$.ajax(args);
return false;
};
当我按下页面上的按钮时,会调用函数var cancel_order。当访问url时,它在服务器端执行一些操作,我可以检查这些操作是否完成,然后返回一个json,指定请求是否成功。你会得到:
{'status':200, 'message':'order canceled'}
问题是永远不会调用回调。我想让回调向用户显示从服务器返回的内容。但即使是回调中的第一个警报(“xpto”)也永远不会执行。为什么呢
编辑:
我已检查此代码:
var cancel_order = function() {
data = {};
var args = {
type:"GET",
url:"/exchange/cancel_order/"+this.id,
data:data,
complete: function() { alert("xpto"); }
};
$.ajax(args);
return false;
})
显示与上述相同的行为:服务器端一切正常,但不调用回调。为什么不将其更改为:
function done_cancel_order (res, status) {
/* remains same */
};
我希望,这个对你有用
或者简单地说:
complete: alert("xpto");
确保调试工具没有任何问题[例如,
console.log
],它可能会破坏您的js代码,产生意外的结果。Hi!如果我这样做了,那么取消订单就没有成功完成。服务器从未收到请求。将其设置为完成:警报(“xpto”);将完整事件设置为警报的返回值,该返回值不是回调函数。确保此.id
是在取消订单
函数中定义的?不管怎么说,您误用了HTTP协议,您不应该使用GET
来执行DELETE
操作,也不应该将状态包含在响应的主体中:它已经在头中了^^^^^是的,我确信这是定义的,因为正如我所说的,函数cancel\u order被正确调用,this.id具有正确的值,服务器获得正确的请求,正确完成请求,并发回正确的响应。但是没有调用回调函数。是的,我知道HTTP协议,但这只是django项目的一小部分,我还没有弄清楚如何在ajax请求中使用他们的CSRF令牌,这些请求只在POST/DELETE中需要,因此我使用GET来确保问题的javascript部分首先起作用。尝试调用$.ajax(args).done(function(){console.log('done',arguments)}.fail(function(){console.log('fail',arguments)});
,然后报告您的控制台日志。您知道吗…?它说console.log命令来自dajaxice(这是一个用于执行ajax调用的django应用程序).很明显,在我给你看的代码中,我根本没有使用dajaxice。所以我现在怀疑dajaxice正在拦截我的js并把它搞砸。我会尝试从django项目中完全删除dajaxice,几分钟后再联系你。是的!就是这样。我卸载了dajaxice,它现在正在工作。妈的,这是浪费时间。如果您的回答是“确保dajaxice没有弄乱您的js”,我会将其标记为正确。已解决。我安装了dajaxice,它弄乱了我的代码。我卸载了它,现在它可以工作了。谢谢:-)