2012-06-12 29 views
5

這裏的JavaScript數組是我的代碼:獲得在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) 

,當我訪問本地主機:8000,然後點擊按鈕,我在後臺控制檯中打印出「Nothing」,就像你知道的那樣得到消息「失敗」的前端

uh..can人求解帶這個問題,我想這得返回一個列表([1,2,3,4,5,6])或像這樣

代碼(arr = reqeust.GET.get('arr','Nothing'))------ --- append1 -------

我在控制檯得到這個當我點擊BTN

[12月/ 6/2012 9時48分44秒]「GET /顯示/?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 -------

我固定我的代碼是這樣的:

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

我得到了6這是最後一個javascript數組,我怎麼能得到整個數組?

感謝提前!

+0

實際的請求URL是什麼樣的? –

+0

對不起!我忘了返回html頁面,等一下 – sashimi

+0

@Ignacio Vazquez-Abrams我解決了我的問題,並將請求URL放在問題內容 – sashimi

回答

10

jQuery已決定在字段名稱中添加方括號,最有可能適應PHP。它們並不是Django所必需的,但無論如何。改爲訪問request.GET['arr[]']request.GET.getlist('arr[]')

+0

** request.GET.getlist('arr []')的底部**作品!!和我serached關於請求url的信息** arr%5B%5D = 1&arr%5B%5D = 2 ** EQUALS ** arr [] = 1&arr [] = 2 **。**和** request.GET **返回** QueryDict **謝謝@Ignacio Vazquez-Abrams^_^ – sashimi

+0

多好的答案。 –

5

您還可以設置:

$.ajaxSettings.traditional = true; 

這將使jQuery的根據實際HTTP標準,這與Django的工作表現。

當你不打算訪問request.GET或request.POST你自己(即ajax發佈表單)時,這是必需的。

明確建議在之間設置此項,每 django項目。

+0

謝謝你@jpic都一樣,我嘗試你的建議,我得到這樣的請求網址:** http://127.0.0.1:8000/show /?arr = 1&arr = 2&arr = 3&arr = 4&arr = 5&arr = 6 **。我更改了request.GET.getlist('arr')**,我也工作。謝謝你的suggeistion〜 – sashimi