【问题标题】:Angular to pass params as array (eg. ?category[]=1&category[]=2&category[]=3)将参数作为数组传递的角度(例如?category[]=1&category[]=2&category[]=3)
【发布时间】:2013-10-10 17:06:08
【问题描述】:

我试图弄清楚如何通过 AngularJS 中的 $http.get() 方法发送一个数组。这是我正在做的事情:

$http.get('/events.json', {params: {category_id: [1,2]}});

我希望它以 /events.json?category_id[]=1&category_id[]=2 的形式发送,但它却以 /events.json?category_id=[1,2] 的形式发送

有什么办法可以纠正这个问题吗?

【问题讨论】:

  • 也许可以试试{params: "category_id[]=1&category_id[]=2"}

标签: javascript jquery json angularjs


【解决方案1】:

你可以试试

$http.get('/events.json', {params: {category_id[]: 1, category_id[]: 2}});

【讨论】:

  • 这不起作用(即使语法错误已修复),因为 javascript 只会保留最新的键
  • 尝试将category_id[] 设为字符串,并添加索引。 params: {'category_id[0]': 1, 'category_id[1]': 2}
  • Rocket Hazmat:到目前为止,您的建议绝对是最好的,但它以 category_id"=>{"0"=>"1", "1"=>​​"2"} 的形式出现,而不是category_id"=>["1", "2"] 在后端。
【解决方案2】:

解决了,虽然我不得不使用 jQuery 很烦人(AngularJS 团队你在偷懒!)。

var queryString = decodeURIComponent($.param({ category_id: $scope.checkedCategories }));
$http.get('/events.json?' + queryString);

【讨论】:

  • decodeURIComponent 真的有必要吗?对我来说似乎是错误的。
猜你喜欢
  • 2022-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多