Javascript 角度http post向请求添加额外的参数
我在指令中有以下内容:Javascript 角度http post向请求添加额外的参数,javascript,jquery,ruby-on-rails,angularjs,Javascript,Jquery,Ruby On Rails,Angularjs,我在指令中有以下内容: scope.progressCourse = -> req_data = course_id: scope.course.id success: true $http.post( "<%= Rails.application.routes.url_helpers.progress_course_path %>", req_data ).then (succesful_resp) -> scope
scope.progressCourse = ->
req_data =
course_id: scope.course.id
success: true
$http.post(
"<%= Rails.application.routes.url_helpers.progress_course_path %>",
req_data
).then (succesful_resp) ->
scope.course = succesful_resp.data.data
scope.init_from_course_object()
, (error_resp) ->
show_error(error_resp)
请求发送给名为TrainingController的控制器。我运行的是Rails 3.2.13和angular 1.2.10。有人能解释一下为什么会出现额外的哈希值{“training”=>{“course\u id”=>1,“success”=>true}
更新:
如果我加上:
$httpProvider.defaults.transformRequest = (data) ->
if data?
return $.param(data)
return data
我将帖子改为:
$http(
method: "POST"
url: "<%= Rails.application.routes.url_helpers.progress_course_path %>",
data: req_data,
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
).then (succesful_resp) ->
$http(
方法:“员额”
url:“”,
数据:请求数据,
标题:{'Content Type':'application/x-www-form-urlencoded;charset=UTF-8'}
).然后(成功)->
然后我只得到我需要的两个参数。有人能解释为什么会出现这种行为吗?Rails有很多内置功能,可以使处理外部API变得更容易。在这种情况下,它有一个params_包装器,该包装器将操作请求中传入的参数,并将它们嵌套在它假定需要的哈希中 例如,如果您正在将
{name:'foo',age:12}
提交给UsersController,它将假定它们应该封装在嵌套的user
键中,并将透明地为您执行此操作
此包装的文档如下所示:
代码如下:
如果您不想要此功能,可以通过注释掉
/config/initializers/wrap_parameters.rb
中的wrap_参数格式:[:json]
行来禁用它。您是否验证了js代码中是否生成了额外的哈希(例如,通过重命名req\u data
块中的字段,看看会发生什么情况)?您的DOM中是否有
指定training[course\u id]
和training[success]
字段(这是rails RESTful表单中常见的参数命名约定)?你能在github上发布一个复制这种行为的示例应用程序吗?
$http(
method: "POST"
url: "<%= Rails.application.routes.url_helpers.progress_course_path %>",
data: req_data,
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
).then (succesful_resp) ->