Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax完全回调函数从不被调用_Javascript_Jquery_Ajax_Django - Fatal编程技术网

Javascript ajax完全回调函数从不被调用

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

我用的是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_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,它弄乱了我的代码。我卸载了它,现在它可以工作了。谢谢:-)