我使用angularjs发布请求时出错

时间:2015-04-28 09:42:36

标签: angularjs http post

我的代码中有一个帖子:

save2 : function ( lotto ) {

    var configDistintaIngrediente = {
      params: {
              distintaBaseGelato_id : 1,
              ingrediente_id : 2,
              quantitaIngrediente : 4.56,
              lottoIngrediente : lotto } 
      };

      return $http.post(urlDistinteIngredienti, "", configDistintaIngrediente)
        .success(function(data) {
          alert ("OK");
        })
        .error(function(data, status, headers, config) {
              alert (
                "data: " + data + "\n" + 
                "status: " + status + "\n" + 
                "headers: " + headers + "\n" + 
                "config: " + config + "\n" 
              );
        });
  },
  // continue....

我不知道为什么当我调用该函数时,我收到此错误:

SyntaxError: Unexpected token I
at Object.parse (native)
at fromJson (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.js:1065:14)
at defaultHttpResponseTransform (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.js:8579:16)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.js:8664:12
at forEach (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.js:323:20)
at transformData (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.js:8663:3)
at transformResponse (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.js:9389:23)
at processQueue (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.js:13189:27)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.js:13205:27
at Scope.$get.Scope.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.js:14401:28)

这很奇怪,因为在每个案例中,插入我的数据库的操作工作正常,但是在post调用中有错误,事实上我收到了警告:

.error(function(data, status, headers, config) {
              alert (
                "data: " + data + "\n" + 
                "status: " + status + "\n" + 
                "headers: " + headers + "\n" + 
                "config: " + config + "\n" 
              );
        });

这个请求有效,但是给我一个错误......

2 个答案:

答案 0 :(得分:1)

就像我在评论中说的那样,服务器无法将接收数据与他的参数匹配。

例如,你有这个JSON:

 params: {
              distintaBaseGelato_id : 1,
              ingrediente_id : 2,
              quantitaIngrediente : 4.56,
              lottoIngrediente : lotto } 
      };

你有2个选项可以使这个匹配参数,逐个发送这个数据,或者创建一个具有完全相同声明的类。

如果您逐个发送:

<强>客户端

$http.post(urlDistinteIngredienti, "", configDistintaIngrediente.distintaBaseGelato_id , configDistintaIngrediente.ingrediente_id, ... )

而你的服务只需得到这样的参数:

服务器

function(int distintaBaseGelato_id , int ingrediente_id, ...)

第二个选项:创建一个类

您可以创建一个与JSON具有相同声明的类。 为此,您的客户端保持不变,他发送JSON中的所有数据,这是进行匹配的服务器。

服务器

function(configDistintaIngrediente value)

configDistingaIngrediente将是一个为比赛创建的类。这个类将是这样的:

//Declaration class
private int distintaBaseGelato_id;
private int ingrediente_id ;
private float quantitaIngrediente;
private String lottoIngrediente ;

// Getters and setters

使用此类,服务器将能够将每个JSON数据与其参数数据匹配,然后您就可以在函数中使用此数据。

答案 1 :(得分:0)

非常感谢Apédémak。 我确信我的请求是以正确的方式提出的

http服务上的呼叫帖子(来自文档):

$ http.post(url,data,[config]);

其中[config]是js中的对象:

{ params: {
          distintaBaseGelato_id : 1,
          ingrediente_id : 2,
          quantitaIngrediente : 4.56,
          lottoIngrediente : lotto } 
};

事实上,我总是有这样的要求。

现在我已经解决了我的问题。问题是在我的servlet中有一行像这样的代码:

response.setContentType("application/json")

我返回简单的“text / plain”实际上一切正常,但我在回复时出错了。

非常感谢您的时间和耐心。