2017-12-29 40 views
1

는 :jQuery의 .get()은 arguments 객체를 어떻게 인코딩합니까? 아래의 코드 감안할 때

requestRefresh("arg1", "arg2"); 

function requestRefresh (listofnames) { 
     var args = { 
       name: [], 
       action: "ajax.refresh" 
     }; 
     for (var i = 0; i < arguments.length; ++i) { 
       args.name.push(arguments[i]);   
     } 
     jQuery.get(url, args).done(function (results) { 
      ... 
     }); 
}); 

쿼리는 다음과 같이 인코딩됩니다 :

url?name%5B%5D=arg1&name%5B%5D=arg2&action=ajax.refresh 

하지만 난없이 원하는 인코딩 '[]'각각의 "이름"후 :

url?name=arg1&name=arg2&action=ajax.refresh 

이것을 수행 할 방법이 있습니까?

답변

1

이 동작은 1.4 이후에 존재합니다. 이전 동작은이 jQuery.ajaxSettings.traditional = true;

  • 인코딩 스스로를 사용

    • 변경을 찾고 대신 // 덕분에 @Barmar하는 $.get
    • 전화 $.ajax(url, {traditional: true})에 문자열을 전달하는 것입니다

    참조 http://api.jquery.com/jquery.param/

    // <=1.3.2: 
    $.param({ a: [ 2, 3, 4 ] }); // "a=2&a=3&a=4" 
    // >=1.4: 
    $.param({ a: [ 2, 3, 4 ] }); // "a[]=2&a[]=3&a[]=4" 
    
  • +0

    글쎄, 그건 절름발이 야. b 감사합니다. –

    +1

    '$ .ajax'를 호출하고'traditional : true '옵션을 사용할 수도 있습니다. 그렇게하면 해당 요청에 대해서만 설정을 전역 적으로 변경하지 않아도됩니다. – Barmar

    +1

    @JohnHascall 대부분의 스크립팅 언어에서 동일한 이름을 가진 여러 매개 변수가 제출되기를 기대하는 방식입니다. '[]'를 사용하지 않으면 응용 프로그램에서 마지막 값만 사용할 수 있습니다. – Barmar