2012-06-12 22 views
5

aquí está mi código:obtener la matriz de JavaScript en 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) 

cuando accedo a localhost: 8000, y haga clic en el botón, obtuve 'Nada' impreso en la consola de back-end, como usted sabe consiguió mensaje 'fallo' en el frontend

uh..can nadie sovle este problema, quiero obtener el código (arr = reqeust.GET.get('arr','Nothing')), que devuelve una lista ([1,2,3,4,5,6]) o algo así

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

tengo esto en la consola cuando hago clic en el BTN

[12/Jun/2012 09:48:44] "GET/mostrar /? 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 -------

me fijo mi código como este:

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

y tengo 6, que es el último de la matriz de JavaScript, ¿cómo puedo obtener todo el conjunto?

gracias avance!

+0

¿Cómo se ve la URL real de la solicitud? –

+0

lo siento! Olvidé devolver la página html, espere un minuto – sashimi

+0

@Ignacio Vazquez-Abrams Solucioné mi pregunta y puse la URL de solicitud en la parte inferior del contenido de la pregunta – sashimi

Respuesta

10

jQuery ha decidido agregar corchetes al nombre del campo, lo más probable es que admita PHP. No son necesarios para Django, pero lo que sea. Acceda a request.GET['arr[]'] y request.GET.getlist('arr[]') en su lugar.

+0

** request.GET.getlist ('arr []') ** ¡¡trabajos!! y recibí información sobre la URL de solicitud ** arr% 5B% 5D = 1 & arr% 5B% 5D = 2 ** EQUALS ** arr [] = 1 & arr [] = 2 **. y ** request.GET ** returns ** QueryDict ** gracias @ Ignacio Vázquez-Abrams^_^ – sashimi

+0

qué gran respuesta. –

5

También se puede establecer:

$.ajaxSettings.traditional = true; 

Esto hará que jQuery se comportan de acuerdo con el estándar HTTP real, que funciona con Django.

Esto es necesario cuando no vaya a acceder a request.GET o request.POST usted mismo (es decir, ajax-publicar un formulario).

Definitivamente se recomienda configurar esto en cada proyecto django.

+0

gracias @jpic de todos modos, intento su sugerencia y obtengo la URL de solicitud de esta manera: ** http: //127.0.0.1: 8000/show /? Arr = 1 & arr = 2 & arr = 3 & arr = 4 & arr = 5 & arr = 6 **. Cambio ** request.GET.getlist ('arr') **, yo también trabajo.gracias tu sugerencia ~ – sashimi

Cuestiones relacionadas