Как я могу сделать запрос прототипа AJAX с массивом значений в качестве параметра? - PullRequest
1 голос
/ 28 марта 2012

Я пытаюсь сделать ajax-обновление в прототипе с некоторыми значениями из множественной выборки, которая отправляет такие запросы, как.

Parameters: {"action"=>"use_campaign", "campaigns"=> ["27929","27932"] , "advertiser_id"=>"", "controller"=>"admin/reporting", "ad_id"=>""} 

, как вы можете видеть, запрос отправляет элементы «кампаний» в виде массивазначений, я пытаюсь сделать то же самое с этим кодом js над прототипом 7.

// get the campaigns 
var campaign_ids = {}; 
var campaigns = $('filter_form').getInputs("hidden","report[campaigns][]"); 
campaigns.each( function(field) {
             campaign_ids.push(field.value); 
}); 

new Ajax.Updater('ad_filter', '/admin/reporting/use_campaign', {
                method : 'get',
                asynchronous : true,
                evalScripts : true,
                parameters : {
                    'advertiser_id' : $('filter_form')['report[advertiser_id]'].value,
                    'ad_id' : $('filter_form')['report[ad_id]'].value,
                    'campaigns' : campaign_ids
                }
 });

кампания получает правильную информацию в виде массива, например:

[ "27929", "27932" ]

, ноКажется, что обновление прототипа AJAX отправляет запрос как:

http://my_domain/admin/reporting/use_campaign?ad_id=&advertiser_id=&campaigns=27929&campaigns=27932

, что отправляет параметры, такие как:

Parameters: {"action"=>"use_campaign", "campaigns"=> "27929" , "advertiser_id"=>"", "controller"=>"admin/reporting", "ad_id"=>""}

Я также пытался с

Object.toJSON(campaign_ids)

, но я толькополучить экранированную строку, такую ​​как

Parameters: {"action"=>"use_campaign", "campaigns"=>"[\"27929\",\"27932\"]" , "advertiser_id"=>"", "controller"=>"admin/reporting", "ad_id"=>""}

Есть что-нибудь, чтобы сделать это, как я хочу?

Спасибо за все.

1 Ответ

7 голосов
/ 28 марта 2012

Похоже, вы используете PHP в качестве внутреннего фреймворка. Чтобы убедиться, что PHP понимает параметры GET, подобные массиву, вам необходимо добавить a [] к имени параметра:

          parameters : {
                //...
                'campaigns[]' : campaign_ids
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...