2013-05-29 30 views
7

Về cơ bản tôi cần một cái gì đó tương tự như http://www.w3schools.com/jquery/jquery_ajax_get_post.asp được thực hiện trong django. Tôi đã tải về các mẫu và thử nghiệm nó tại địa phương với một localhost + php và nó hoạt động ra tốt nhưng tôi không thể có vẻ để có được nó để làm việc trong django không có vấn đề làm thế nào đơn giản là ví dụ. Đây là cơ bản những gì tôi đã thực hiện dựa trên ví dụ từ liên kết ở trên với sửa đổi chút ítCần một ví dụ ajax làm việc đơn giản cho các hình thức django

javascript:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#my_form").submit(function(){ 
    $.post("", 
    {name:"Donald Duck", 
    city:"Duckburg"}, 
    function(data,status){ 
     alert("Data: " + data + "\nStatus: " + status); 
    }) 
    .fail(function() { alert("error"); }); 
    return false; 
    }); 
}); 
</script> 

các url:

url(r'^ajax/$', views.ajax_test, name="ajax"), 

quan điểm:

def ajax_test(request): 
    if request.method == 'POST' and request.is_ajax(): 
     name = request.POST['name'] 
     city = request.POST['city'] 
     message = name + ' lives in ' + city 

     return HttpResponse(json.dumps({'message': message})) #tried without the json. Doesn't work either 

    return render(request, 'books/ajaxTest.html') 

html:

<form id="my_form" action="" method="post" {% if form.is_multipart %}enctype="multipart/form-data"{% endif %}>{% csrf_token %} 
<input type="submit" value="Send"> 
</form> 

Biểu mẫu giả sử bao gồm biểu mẫu django nhưng vì tôi thậm chí không thể có được những điều cơ bản để làm việc, điều đó sẽ là vô nghĩa. Ai đó đã đề cập đến thẻ csrf_token nhưng việc xóa không giải quyết được sự cố. Đầu ra của ví dụ trên về cơ bản chỉ tạo ra cảnh báo ('error') và không có gì khác. Tôi đã trải qua rất nhiều ví dụ nhưng tôi thậm chí không thể có được những ví dụ cơ bản nhất để làm việc

+0

Nếu yo u kiểm tra phản ứng Ajax của bạn trong Trình kiểm tra Chrome hoặc Firefox Firebug, bạn sẽ thấy một số thông báo lỗi sẽ dẫn bạn đến ý tưởng cách khắc phục. –

+1

Tôi đã viết một hướng dẫn về việc triển khai Ajax ở Django, bằng cách sử dụng JQuery: https://aliteralmind.wordpress.com/2014/09/21/jquery_django_tutorial/ – aliteralmind

Trả lời

8

OK..thx cho các nhận xét của bạn..Tôi đã phân loại tất cả..về cơ bản tôi đã bỏ lỡ { % csrf_token%} và csrfmiddlewaretoken: '{{csrf_token}}' .. chỉ vì lợi ích của những người có thể đọc this..the mã mới sẽ giống như thế này

javascript:

<script type="text/javascript"> 
$(document).ready(function(){ 

    $("#my_form").submit(function(){ 
    $.post("", 
    {name:"Donald Duck", 
    city:"Duckburg", 
    csrfmiddlewaretoken:'{{ csrf_token }}' 
    }, 
    function(data,status){ 
     alert("Data: " + data + "\nStatus: " + status); 
    }) 
    .fail(function(xhr) { 
     console.log("Error: " + xhr.statusText); 
     alert("Error: " + xhr.statusText); 
    }); 
    return false; 
    }); 

}); 
</script> 

html:

<form id="my_form" action="" method="post">{% csrf_token %} 
<input type="submit" value="Send"> 
</form> 
+1

Tốt. Cảm ơn bạn đã đăng bài đó. – Paul

Các vấn đề liên quan