Angularjs 角度$http POST转义嵌套对象
所以,我100%肯定我错过了一些明显的东西,但我已经尝试了我能想到的一切。我正在尝试在angular中设置一个简单的$http POST请求:Angularjs 角度$http POST转义嵌套对象,angularjs,Angularjs,所以,我100%肯定我错过了一些明显的东西,但我已经尝试了我能想到的一切。我正在尝试在angular中设置一个简单的$http POST请求: $http({ url: 'http://api.local.com/sign_in.json', method: 'POST', headers: {'Content-Type': 'application/json'}, params: test5 }) 我试图发送一个对象,该对象的密钥为“u
$http({
url: 'http://api.local.com/sign_in.json',
method: 'POST',
headers: {'Content-Type': 'application/json'},
params: test5
})
我试图发送一个对象,该对象的密钥为“user”,另一个对象的值为两个键值对(电子邮件和密码),如下所示:
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\"}"}
第一级“user”键输入正确,但是作为“user”键值的整个嵌套对象都被转义
如果我更改var test5={'user':'test'},参数将正确输入,因此问题是嵌套对象。我需要的参数是:
Parameters: {"user"=>{"email":"test@test.com","password":"testing"}}
不是:
这一天有点漫长,如果我错过了一些非常明显的东西,我深表歉意。提前感谢您的帮助。通过使用
params
您的test5
是url编码的,并显示在url中。由于您正在发送用户信息,您可能希望使用数据
而不是参数
$http({
url: 'http://api.local.com/sign_in.json',
method: 'POST',
headers: {'Content-Type': 'application/json'},
data: test5
})
另请注意,单引号不是有效的JSON。您是否尝试过JSON.stringify(test5)?@jonkroll JSON.stringify(test5)以参数形式出现在服务器上:{“0”=>“{”,“1”=>“\”,“10”=>“e”,“11”=>“m”,“12”=>“a”,“13”=>“i”,“14”=>“l”,“15”=>“,“17”=>“16”:,“18”=>“t”,“19”=>“e”,“2”=>“20”=>“t”,“22”=>“t”23“=>“t”、“24”=>“e”、“25”=>“s”、“26”=>“t”、“27”=>“28”=>“c”、“29”=>“o”、“3”=>“s”、“30”=>“m”、“31”=>“e”、“32”=>“s”、“33”=>“p”、“35”=>“a”、“36”=>“s”、“37”=>“s”、“38”=>“w”、“39”=>“o”、“4”=>“e”、“40”=>“r”、“42”=>“d”、“43”=>“43”“…感谢Jasen的想法。我改为使用数据,现在它正在向服务器发送选项请求。我读了一些这方面的内容,但我认为如果我能在服务器端处理选项请求,数据应该是正确的。还感谢关于有效JSON的提示!
$http({
url: 'http://api.local.com/sign_in.json',
method: 'POST',
headers: {'Content-Type': 'application/json'},
data: test5
})