2016-07-28 102 views
2

目前,我遇到了Angular2和RoR5 API的问题。我试图将对象保存到API服务器,但这不起作用。POST请求中的参数中没有数据

这是我Angular2代码服务:

createFrame(frameData) { 
    let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); 
    let options = new RequestOptions({ headers: headers }); 
    let body = JSON.stringify({frame: frameData}); 
    return this.http.post(this.frameURL, body, headers).map((res: Response) => res.json()); 
} 

请求是通过我的浏览器量身定做的,我可以看到JSON数据: enter image description here

但回报率是不能够得到这个职位数据。

[1] pry(#<Api::V1::FramesController>)> params 
=> <ActionController::Parameters {"format"=>:json, "controller"=>"api/v1/frames", "action"=>"create"} permitted: false> 
[2] pry(#<Api::V1::FramesController>)> 

有人可以告诉我,怎么了?

+0

看起来你可能需要[许可证(http://api.rubyonrails.org/classes/ActionController/Parameters.html )'title','is_photolini'等。 –

回答

1

在你的情况下,你设置表单数据的内容类型,并发送一些JSON格式的内容。

您可以使用发送表单数据或JSON内容。

  • 表数据

    createFrame(frameData) { 
        let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); 
        let options = new RequestOptions({ headers: headers }); 
        let form = new URLSearchParams(); 
        form.set('param1', 'some value'); 
        let body = form.toString(); 
        return this.http.post(this.frameURL, body, headers).map((res: Response) => res.json()); 
    } 
    
  • JSON数据

    createFrame(frameData) { 
        let headers = new Headers({ 'Content-Type': 'application/json' }); 
        let options = new RequestOptions({ headers: headers }); 
        let form = new URLSearchParams(); 
        form.set('param1', 'some value'); 
        let body = form.toString(); 
        return this.http.post(this.frameURL, body, headers).map((res: Response) => res.json()); 
    } 
    
+0

谢谢你的帮助。我有一个类似的解决方案,但它不起作用。现在我发现了这个问题。在返回行中,我将标题变量传递给post方法。它必须是选项。也许你可以改变你的解决方案,所以它可能对别人有帮助。 – user39063

0

的问题可能与CORS(跨源资源共享)

你的,使你的应用程序 - > Enabling cors Rails5

好运