Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度$http POST转义嵌套对象_Angularjs - Fatal编程技术网

Angularjs 角度$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

所以,我100%肯定我错过了一些明显的东西,但我已经尝试了我能想到的一切。我正在尝试在angular中设置一个简单的$http POST请求:

$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
})