2014-11-28 4 views
0

다음과 같은 문제가 있습니다. 나는 다중 선택 상자가있다. 다중 선택에서 선택한 모든 변수를 읽고 HTTP Get을 통해 전달하려고합니다. 같은 이름의 변수를 넘김

 ajax: { 
     url: wwwFullDir + 'api/statistics/', 

     data: function (d) { 

      var data = $('#form-filter').serializeArray(), filter = {}; 
      { 
       d[data[i].name] = data[i].value; 
       console.log(data[i].name + "=" + data[i].value); 
      } 
     } 
    } 

내가 지금까지 너무 좋아

 filter[company] = 1 
     filter[company] = 2 
     filter[company] = 3 

다 받고 있어요 출력이지만, 변수 이름이기 때문에 문제는, JQuery와 만 GET 쿼리에 회사 ID의 중 하나를 통과하다 는 같은 :

 /api/statistics/?filter[company]=3 

은 다음과 같아야합니다

/api/statistics/?filter[company]=1&filter[company]=2&filter[company]=3 

어떤 아이디어가 잘못 되었나요? 감사!

filter[company]=1,2,3 

그리고 캡처 스크립트

는, 배열로 변경 :

+0

쉼표로 구분 된 목록을 사용해도 되겠습니까? 'filter [company] = 1,2,3'처럼? – Purag

+2

이'/ api/statistics /? 필터 [회사] = 1 & 필터 [회사] = 2 & 필터 [회사] = 3'은 틀렸고'filter [company]'는 마지막 값 ('3')이 할당됩니다. '$ _GET [company] '를 가질 것인데,''$'$' '$ {GET}와 같이''와 결합하거나''/ api/statistics /? filter [company] [] = 1 & filter [company] [] 'as array –

+0

응답 해 주셔서 감사합니다. @u_mulder 변수 이름을 [company] []로 바꿀 경우 jquery는 나머지 ID 대신 필터 [회사] [] = 3 만 넣습니다. 변수 이름은 동일하게 유지되며 3 배의 에테르 방식으로 할당됩니다. Purag의 대답은 내 문제를 해결하고 답변으로 받아 들여 감사 드리겠습니다. – user3721636

답변

1

가장 좋은 방법은 그것을 쉼표로 구분 된 목록을 만드는 것입니다. 나는 약간의 조사를했는데, 그것은 당신이 $.ajax()true에의 traditional 옵션을 설정하여이 작업을 할 수 있어야 밝혀 : 그러나

$filter = $_GET["filter[company]"]; 
$companies = explode(",", $filter); 
// returns array(1, 2, 3) 

: 당신이 PHP를 사용하는 경우, 당신은 할 수

$.ajax({ 
    url: wwwFullDir + 'api/statistics/', 
    data: function(d){ 
    // retrieve data 
    }, 
    traditional: true 
}); 

jQuery의 전통적인 직렬화에 대한 자세한 내용은 here입니다.

+0

대단히 감사합니다! – user3721636

관련 문제