5

ここに私のコードがあります:

urls.py:

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

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

ビュー.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)

localhost:8000にアクセスしてボタンをクリックすると、バックエンド コンソールに「Nothing」と表示されます。フロントエンドで「fail」というメッセージが表示されます。

ええと..誰でもこの問題を解決できますか?リスト( )またはこのようなものarr = reqeust.GET.get('arr','Nothing')を返すコード( )を取得したい[1,2,3,4,5,6]

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

btnをクリックすると、コンソールにこれが表示されます

[2012/06/12 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')

javascript配列の最後の1つである6を取得しましたが、配列全体を取得するにはどうすればよいですか?

よろしくお願いします!

4

2 に答える 2

9

jQuery は、フィールド名に角かっこを追加することを決定しました。これは、おそらく PHP に対応するためです。Django では必須ではありませんが、何でも構いません。アクセスrequest.GET['arr[]']してrequest.GET.getlist('arr[]')代わりに。

于 2012-06-12T02:07:12.233 に答える
5

以下を設定することもできます。

$.ajaxSettings.traditional = true;

これにより、jQuery は、Django で動作する実際の HTTP 標準に従って動作します。

これは、自分で request.GET または request.POST にアクセスしない場合 (つまり、フォームを ajax 投稿する場合) に必要です。

すべてのdjango プロジェクトでこれを設定することを強くお勧めします。

于 2012-06-12T02:31:13.113 に答える