在django中获取javascript数组

sas*_*imi 5 javascript arrays django jquery

这是我的代码:

urls.py:

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

urlpatterns = patterns('',
                       (r'^$',showpage),
                       (r'^show/$',show),
)
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

当我访问localhost:8000,然后单击按钮,我在后端控制台中打印出"Nothing",因为你知道我在前端收到消息"fail"

呃..可以解决这个问题的任何人,我想得到arr = reqeust.GET.get('arr','Nothing')返回list([1,2,3,4,5,6])或类似的代码()

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

当我点击btn时,我在控制台中得到了这个

[12/Jun/2012 09:48:44]"GET/show /?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')
Run Code Online (Sandbox Code Playgroud)

我得到6这是javascript数组的最后一个,我怎么能得到整个数组?

谢谢提前!

Ign*_*ams 9

jQuery决定在字段名称中添加方括号,最有可能容纳PHP.它们不是Django所必需的,但无论如何.访问request.GET['arr[]']request.GET.getlist('arr[]')代替.


jpi*_*pic 5

你也可以设置:

$.ajaxSettings.traditional = true;
Run Code Online (Sandbox Code Playgroud)

这将使jQuery的行为符合实际的HTTP标准,该标准适用于Django.

如果您不打算自己访问request.GET或request.POST(即ajax发布表单),则需要这样做.

绝对建议在每个 django项目中设置它.