2012-06-12 32 views
5

đây là mã của tôi:lấy mảng javascript trong django

urls.py:

from django.conf.urls import patterns 
from views import show,showpage 

urlpatterns = patterns('', 
         (r'^$',showpage), 
         (r'^show/$',show), 
) 

views.py

from django.http import HttpResponse 
def show(request): 
    arr = reqeust.GET.get('arr','Nothing') 
    print arr#**it's 'Nothing'** 
    if arr == 'Nothing': 
    msg = 'fail' 
    else: 
    msg = 'pass' 
    return HttpResponse(msg) 

def showpage(request): 
    html = ''' <html> 
<head> 
<script language="javascript" type="text/javascript" src="/site_media/js/jquery-1.7.2.js"></script> 
</head> 
<body> 
<input type="button" id="input_btn"/> 
</body> 
<script language="javascript" type="text/javascript"> 
$(function(){ 
    $("#input_btn").bind("click",function(){ 
    arr = [1,2,3,4,5,6] 
    $.ajax({ 
     type:"GET", 
     url:"/show/", 
     data:{arr:arr},//**I want pass the arr to django** 
     success:function(data){alert(data);}, 
     error:function(data){alert(data);} 
    }); 
    }); 
}) 
</script> 
</html>''' 
    return HttpResponse(html) 

khi tôi truy cập localhost: 8000 và nhấp vào nút, tôi nhận được 'Không có gì' được in trong bảng điều khiển phụ trợ, như bạn biết tôi đã thông báo 'thất bại' trong frontend

uh..can ai sovle vấn đề này, tôi muốn lấy mã (arr = reqeust.GET.get('arr','Nothing')) mà trả về một danh sách ([1,2,3,4,5,6]) hoặc một cái gì đó như thế này

------ --- append1 -------

tôi nhận này trong bảng điều khiển khi tôi nhấp vào btn

[12/Jun/2012 9:48:44] "GET/hiển thị /? arr % 5B% 5D = 1 & arr% 5B% 5D = 2 & arr% 5B% 5D = 3 & arr% 5B% 5D = 4 & arr% 5B% 5D = 5 & arr% 5B% 5D = 6 HTTP/1.1" 200 4

--------- apend2 -------

Tôi cố định mã của tôi như thế này:

arr = request.GET.get('arr[]','Nothing') 

và tôi nhận 6 là mảng cuối cùng của mảng javascript, làm cách nào tôi có thể nhận được toàn bộ mảng?

cảm ơn trước!

+0

URL yêu cầu thực tế trông như thế nào? –

+0

xin lỗi! Tôi quên trả lại trang html, đợi một phút – sashimi

+0

@Ignacio Vazquez-Abrams Tôi đã sửa câu hỏi của mình và tôi đặt URL yêu cầu ở cuối nội dung câu hỏi – sashimi

Trả lời

10

jQuery đã quyết định thêm dấu ngoặc vuông vào tên trường, rất có khả năng chứa PHP. Họ không cần thiết cho Django, nhưng bất cứ điều gì. Thay vào đó, hãy truy cập request.GET['arr[]']request.GET.getlist('arr[]').

+0

** request.GET.getlist ('arr []') ** công trinh!! và tôi serached thông tin về url yêu cầu ** arr% 5B% 5D = 1 & arr% 5B% 5D = 2 ** EQUALS ** arr [] = 1 & arr [] = 2 ** và trả về ** request.GET ** ** QueryDict ** cảm ơn bạn @Ignacio Vazquez-Abrams^_^ – sashimi

+0

thật là một câu trả lời tuyệt vời. –

5

Bạn cũng có thể thiết lập:

$.ajaxSettings.traditional = true; 

Điều này sẽ làm jQuery cư xử theo tiêu chuẩn HTTP thực tế, hoạt động với Django.

Điều này là bắt buộc khi bạn không truy cập vào yêu cầu.GET hoặc yêu cầu.POST (ví dụ: ajax-đăng biểu mẫu).

Bạn nên đặt thiết lập này thành mỗi dự án django.

+0

cảm ơn bạn @jpic tất cả như nhau, tôi thử đề xuất của bạn và tôi nhận được url yêu cầu như sau: ** http: //127.0.0.1: 8000/show /? Arr = 1 & arr = 2 & arr = 3 & arr = 4 & arr = 5 & arr = 6 ** Tôi thay đổi ** request.GET.getlist ('arr') **, tôi cũng làm việc.cảm ơn suggeistion của bạn ~ – sashimi

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