所以,我100%肯定我错过了一些明显的东西,但我已经尝试了所有我能想到的东西。我试图在angular:
中设置一个简单的$ http POST请求$http({
url: 'http://api.local.com/sign_in.json',
method: 'POST',
headers: {'Content-Type': 'application/json'},
params: test5
})
我试图发送一个拥有“用户”密钥的对象。以及具有两个键值对(电子邮件和密码)的另一个对象的值,如下所示:
var temp2 = {
'user': {
'email': 'test@test.com',
'password': 'testing'
}
};
var test5 = {'user':{'email':'test@test.com','password':'testing'}};
但是,当我发布任何我尝试过的版本(远远超过上面显示的版本)时,我收到服务器的回复:
Started POST "/sign_in.json?user=%7B%22email%22:%22test@test.com%22,%22password%22:%22testing%22%7D" for 127.0.0.1 at 2015-03-02 16:22:58 -0500
Processing by V1::SessionsController#create as JSON
Parameters: {"user"=>"{\"email\":\"test@test.com\",\"password\":\"testing\"}"}
第一级'用户'密钥是正确的,但整个嵌套对象是'用户'的价值。密钥被转义。
如果我更改了var test5 = {' user' :'测试' },参数正确进入,因此问题是嵌套对象。我需要参数:
Parameters: {"user"=>{"email":"test@test.com","password":"testing"}}
不
Parameters: {"user"=>"{\"email\":\"test@test.com\",\"password\":\"testing\"}"}
度过了漫长的一天,如果我错过了一些非常明显的东西,请道歉。感谢您的帮助。
答案 0 :(得分:1)
使用params
您的test5
已经过网址编码并显示在网址中。由于您要发送用户信息,因此您可能希望使用data
而不是params
。
$http({
url: 'http://api.local.com/sign_in.json',
method: 'POST',
headers: {'Content-Type': 'application/json'},
data: test5
})
另请注意,单引号无效JSON。