【发布时间】:2013-03-27 19:36:00
【问题描述】:
因此,在我的 Angular 应用程序中,我尝试使用 JSP 在服务器端处理保存。我遇到的问题是,当使用 Angular 的 $save 方法时,它将对象数据(我正在保存的对象)作为 JSON 对象发送,但不是以我习惯的任何方式发送。该对象无法通过 request.getParameter() 访问,并且在 firebug 中查看请求时,我可以看到它没有发送 JSON 或具有任何参数。相反,它在“POST”部分发送 json 对象。我不太明白这里发生了什么。 ???
所以这是我目前所知道的:
Angular 中帖子的默认 contentType 是“application/json”,因此如果您将其更改为“application/x-www-form-urlencoded;charset=utf-8”,您至少可以获得json对象使用request.getParameter()(如果你也改变了json对象的传输方式)
但是
这并不是真正的问题,因为如果我使用 jQuery.ajax() 发出请求并将 contentType 设置为“application/json”,然后将 json 对象作为数据传递,那么我仍然会得到json 对象属性作为参数,所以我可以使用 request.getParameter(),你只是没有在 url 中获取查询字符串。
SOOO,我的问题是:
1) Angular 发送数据的方式到底发生了什么
2) 有什么方法可以在仍然能够使用 $resource $save 函数的同时更改它(更改 $http 的 contentType 在使用 $resource 方法时会产生一些不好的影响),最重要的是
3) 如果我不能改变它(或者即使我可以),你如何用它现在的工作方式来解析JSP中的json数据。
非常感谢您的帮助,我不敢相信我还找不到有关此的内容,我一直在寻找一段时间。
【问题讨论】:
-
Angular 将其数据作为标准 REST 发送。 $resource.save 是一个 POST 请求,因此数据在请求的主体中是一个 json 对象(正如预期的那样,因为内容类型是 application/json
-
根据我读过的很多内容,这是有道理的,但是你知道为什么当我使用带有 Post 方法和 contentType 作为 application/json 的 jQuery.ajax() 时,数据发送方式不同,它在参数中可用,它们不在请求正文中(至少我很确定它们不是)?
-
我可以看看你的代码(jQuery.ajax() 请求和 angular.$resource 请求)吗?
标签: javascript ajax json jsp angularjs