2010-07-16 2 views
15

나는 현재 다음과 같은 자바 스크립트 배열이 있습니다AJAX 호출 중에 JS 변수 이름 끝에 대괄호를 제거하려면 어떻게합니까?

서버 측에
var data = { 
    'stuffs': stuffs 
}; 

$(".output").load("/my-server-code/", data, function() { 
}); 

, 내가 request.POST의 내용을 인쇄하는 경우 (I :

var stuffs = ['a', 'b']; 

내가 jQuery의 load를 사용하여 서버 코드에 위의 통과를 현재 장고)를 사용 해요, 내가 얻을 :

'stuffs[]': [u'a', u'b'] 

주목하라 [] 현에서 변수 이름 stuffs의 ix 서버 코드에 도달하기 전에 해당 []을 제거 할 수있는 방법이 있습니까?

답변

31

이 ... 기본 동작 in jQuery 1.4+입니다 :

$.ajaxSetup({traditional: true}); 

주이 모든 요청에 ​​영향을 ...하는 이 경우에는 보통 당신이 원하는 것입니다. 요청 당 (요청 당)을 원하면 $.ajax() 호출을 더 길게 사용하고 traditional: true을 설정해야합니다. You can find more info about traditional in the $.param() documentation.

+4

1.10 $ .ajaxSettings에서 호출 할 수 없습니다. 대신 $ .ajaxSetup을 사용해야합니다. 사용법은 위와 같습니다. –

-3

[]은 변수가 배열임을 나타냅니다. 변수 이름에 []을 추가하는 것이 Python/Django가 배열이라고 말하는 방법이라고 생각합니다. 당신은 아마 그것을 보여주지 않는 당신 자신의 인쇄 기능을 구현할 수있을 것이다.

+0

즉, []의 추가가 자바 스크립트 대신 장고에서 오는 것을 의미합니까? –

-1

배열이 GET 요청을 사용하여 양식 또는 AJAX를 통해 제출되면 각 요소에 배열 이름이 제공되고 그 뒤에 선택적으로 빈 대괄호 쌍이옵니다. 따라서 jQuery는 URL http://example.com/get.php?stuff[]=a&stuff[]=b을 생성합니다. 이것은 배열을 제출하는 유일한 방법이며, 자바 스크립트는 표준을 따르고 있습니다.

POST 요청은 정확히 동일한 방식으로 작동합니다 (json이 하나의 긴 json 문자열로 전송되지 않는 한).

PHP에서 이것은 원래 배열로 다시 구문 분석되므로 쿼리 문자열이 약간 이상 할 수 있지만 데이터는 전송 될 때 수신됩니다. $_GET['stuff'][0]은 PHP에서 올바르게 작동합니다.

Django가 쿼리 문자열을 구문 분석하는 방법을 잘 모르겠습니다. 당신이 게시물이처럼 traditional optiontrue에 설정해야 &stuffs=a&stuffs=b 대신 &stuffs[]=a&stuffs[]=b 수 있도록하려면

+1

"이것은 배열을 제출하는 유일한 방법이며 자바 스크립트는 표준을 따르고 있습니다." - 표준이 아닌 Rails/PHP 규칙입니다. 배열은 완벽하게 합법적으로 foo = 1 & foo = 2로 보낼 수 있습니다. – jholster

관련 문제