如何从ajax调用中使用rest Web服务

时间:2015-04-13 05:41:41

标签: java javascript jquery ajax web-services

我想从ajax调用我的休息网络服务。我服务的网址是“https://scv-dev.com/cdcAug/surveys/surveyData”。我可以从其他客户端(firefox浏览器)调用此服务,但是当我尝试从ajax调用时出现错误。

Ajax电话:

$.ajax({
     type: "POST",
     url: "https://scv-dev.com/cdcAug/surveys/surveyData",
     data: JSON.stringify({surveyId:1}),
     dataType: "json",
     headers: {
            Accept: "application/json",
            "Access-Control-Allow-Origin": "*"
        },
     success: function (data) {
          alert(1);
     },

     error: function (jqXHR) {            
          alert(2);
     }

 });

以下是网络服务的代码:

@RequestMapping(value = "/surveyData", method = RequestMethod.POST, headers = "Accept=application/json")
public @ResponseBody
SurveyDataResponse getSurveyData(@RequestBody SurveyResApp surveyResApp,
        final HttpServletResponse httpResponse) {
            ..............
        }

2 个答案:

答案 0 :(得分:1)

您似乎对Access-Control-Allow-Origin: *感到困惑。这是服务器返回的内容,而不是客户端设置的内容。

您似乎有一个同源访问错误并查看浏览器错误日志或诊断返回的错误代码应该告诉您到底发生了什么。

您可能需要通过将标头Access-Control-Allow-Origin: *添加到服务器响应中来启用Web服务以进行跨源访问。有关示例,请参阅here

答案 1 :(得分:0)

我创建了以下代码中添加的过滤器类,以便在响应中添加“Access-Control-Allow-Methods”。

response.addHeader("Access-Control-Allow-Origin", "*");
    response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, HEAD");
    response.addHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept");
    response.addHeader("Access-Control-Max-Age", "1728000");