我的代码中有一个帖子:
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"
);
});
这个请求有效,但是给我一个错误......
答案 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”实际上一切正常,但我在回复时出错了。
非常感谢您的时间和耐心。