小编典典

Django Ajax jQuery调用

ajax

这可能是基本的,但是我花了两天时间,阅读了无数教程,但仍然无法正常工作。为简单起见,我尝试完成一项基本任务只是为了看它能起作用。我想向我的捐赠视图发送一个ajax调用。我看到它成功通过,但是我期望我的模板也将更新为“
TRUE”,但仍为“ FALSE”。我有任何帮助或建议。

我的jQuery …

$.ajax({
    type: "POST",
    url:"/donate/",
    data: {
    'test': 'success',
    },
    success: function(){
      alert('test')
     },
    error: function(){
        alert("Error");
});

这是我的看法

def donate(request):
    if request.is_ajax():
        test = "TRUE"

    if request.method == 'POST':
        form = DonateForm(request.POST)
        if form.is_valid():
            form.save()
    else:
        form = DonateForm()
        test = "FALSE"

    return render_to_response('donate_form.html', {'form':form,'test':test}, context_instance=RequestContext(request))

我的模板包括这个…

<h1>{{ test }}</h1>

更新/解决方案

就像在此问题的评论中提到的那样,我没有对返回的数据做任何事情。我将成功电话更新为以下内容,并且成功了

    $.ajax({
    type: "POST",
    url:"/donate/",
    data: {
    'zip': zip,
    },
    success: function(data){

        results = $(data).find('#results').html()               
        $("#id_date").replaceWith("<span>" + results + "</span >");

    },
    error: function(){
        alert("Error");
    },

阅读 284

收藏
2020-07-26

共1个答案

小编典典

我认为问题出在传递数据的地方。你用Firebug吗?POST通常来说,这是一个检查是否传递任何东西的出色工具,它也是Web开发的出色工具。

这是一个从表单发送Ajax调用的工作示例

$("#form").submit(function(event) {
        var $form = $(this),
        $inputs = $form.find("input, select, button, textarea"),
        serializedData = $form.serialize();

        $.ajax({
            url: "/donate/",
            type: "post",
            data: serializeData,
            success: function(response) {
                alert(response)
            }
        })
        event.preventDefault();
    });

然后您的视图可以看起来像这样

if request.is_ajax() or request.method == 'POST':
        form = DonateForm(data=request.POST)
        if form.is_valid():
            return HttpResponse("Success")
        else:
            return HttpResponse("Fail")

顺便说一句,除非您真的需要所有其他功能,否则$.ajax()我建议您$.post()改用它,因为它似乎更直接使用。

2020-07-26