【问题标题】:ajax request not working in django?ajax 请求在 Django 中不起作用?
【发布时间】:2014-04-25 21:41:38
【问题描述】:

这是我的使用Jquery blockUI插件的js:

$(document).ajaxStop($.unblockUI);

 $('#submit-id-submit').click(function() {
  $.blockUI({message:'<h1><img src="{% static 'css/spinner.gif' %}" /> Just a moment ...</h1>'});
  $.ajax({
    url: "/search/test/",
    cache:'false',
    dataType: 'text',
    type:"GET",
    success: function(data){
      alert(data);
    },
    error: function(data){
      alert('error; '+ eval(error));
    }
  });
});

我的看法:

def test_ajax(request):
    time.sleep(20)
    print "in test_ajax"
    return HttpResponse("hell world")

url(r"search/test/$", test_ajax,name="dummy"),

首先,我看到 ajax 调用返回错误(因为我从错误中得到警报。但它没有显示错误消息)

其次,我的视图 test_ajax 没有被调用,因为我希望那里的打印语句被执行,但它没有执行。

我不知道这里出了什么问题。

【问题讨论】:

  • 你能在你的警报上设置一个断点,比如在 Chrome 的开发工具中,检查错误并发布它吗?

标签: jquery ajax django


【解决方案1】:

过去我也遇到过类似的问题。原因是您允许默认表单提交。试试这个,看看你会得到什么;

$('#submit-id-submit').click(function(e) {
   e.preventDefault();
  $.blockUI({message:'<h1><img src="{% static 'css/spinner.gif' %}" /> Just a moment ...</h1>'});
  $.ajax({
    url: "/search/test/",
    cache:'false',
    dataType: 'text',
    type:"GET",
    success: function(data){
      alert(data);
    },
    error: function(data){
      alert('error; '+ eval(error));
    }
  });
});

或者干脆return false

$('#submit-id-submit').click(function() {

  $.blockUI({message:'<h1><img src="{% static 'css/spinner.gif' %}" /> Just a moment ...</h1>'});
  $.ajax({
    url: "/search/test/",
    cache:'false',
    dataType: 'text',
    type:"GET",
    success: function(data){
      alert(data);
    },
    error: function(data){
      alert('error; '+ eval(error));
    }
  });
   return false;
});

通过这样做,您可以防止默认操作(我猜在您的情况下是表单提交) 你可以阅读更多关于这个here;

【讨论】:

    【解决方案2】:

    您的错误函数试图提醒不存在的error 变量。尝试提醒data 变量。

    为了帮助排除故障,您可以检查视图功能是否适用于非 AJAX GET 请求。

    最后,这不适用于您使用 GET 请求的情况,但如果您需要执行 AJAX 发布请求,则需要在标头 https://docs.djangoproject.com/en/1.6/ref/contrib/csrf/#ajax 中发送 CSRF 令牌。

    【讨论】:

      猜你喜欢
      • 2021-12-21
      • 2015-01-09
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2017-09-11
      相关资源
      最近更新 更多