Angular Ajax请求发送对象

时间:2014-08-07 12:45:41

标签: javascript jquery ajax angularjs

我正在编辑保存在AngularJs范围内的对象中的内容。提交后,我执行以下功能:

$scope.saveQuestion = function(){       
    var request = $http({
        method: "post",
        url: "/manager/evaluations/evaluations/manage_questions/537c6179-8ed8-49b4-ac6b-25715f550349", 
        data: {EvaluationQuestion: $scope.newquestion}
    });
}

$ scope.newquestion具有以下对象:

[relevance: 3, evaluation_topic_id: 1, type: "text", action: "add", name: "asdfasdfsadfas"] 

但是ajax请求只显示了一个Request Payload:

请求Payloadview来源

  {EvaluationQuestion:[]}
    EvaluationQuestion: []

任何人都可以猜出发送数据为何为空?

3 个答案:

答案 0 :(得分:2)

您的$scope.newquestion似乎是数组,而不是对象。

JSON不支持带有命名键的Array数据类型。例如:

var foo = [];
foo['bar'] = 'One';
foo.baz = 'Two';

JSON.stringify(foo); // return "[]"

如果$scope.newquestion不需要是数组,只需使用对象。

而不是

$scope.newquestion = [];

将其更改为:

$scope.newquestion = {};

答案 1 :(得分:1)

我认为你在$ scope.newquestion中使用了错误的JSON语法。 在这里,您要定义一个应该包含在{}中的对象,但是您将它包含在[]中,它代表一个数组。我js数组你不能[name1: value1, name2: value2]

尝试用固定支架替换方括号,如下所示:

{relevance: 3, evaluation_topic_id: 1, type: "text", action: "add", name: "asdfasdfsadfas"}

希望有所帮助。

答案 2 :(得分:0)

试试这个:

  

data:{EvaluationQuestion:angular.toJson($ scope.newquestion)}