从JSP返回JSONP而不是JSON

时间:2012-12-21 16:06:35

标签: jsp jsonp

我在jsp中将响应类型设置为json时发现this question但是我需要将响应类型设置为jsonp以进行跨域访问。它仍然是这样的:

response.setContentType("application/javascript");

只是将jsp中的响应包装在callbackfunction( +内容+ )中,还是需要做更多的事情?

3 个答案:

答案 0 :(得分:3)

我最近不得不这样做。在服务器端我有类似的东西:

string callbackName = queryMap['callback']; //jquery will pass in some name in our .getJSON call below
string jsonData = getJsonData();
string jsonp = callbackName + "(" + jsonData + ")";

response.SetContentType('application/javascript');
response.Send( jsonp );

在javascript中就是这样:

var url = getUrl() + "?callback=?";
$.getJSON(url,function(onSuccessData){ alert(onSuccessData); });

答案 1 :(得分:0)

支持javascript中的跨域访问,您可以使用     $ .support.cors = true;
除此之外,您可以将内容类型设置为jsonp的application / javascript。

答案 2 :(得分:0)

jsp:

 String str = "{\"appNo\":\"" + "2" + .....+ "\"}";
    String json = "m1(" + str + ")";
    response.getWriter().write(json);

HTML:

 $.ajax({
          type: 'GET',    
          url: url,
          dataType: "jsonp",
          crossDomain: true,          
          cache:false,
           jsonp:"callback",
          success: function(data){  }....
   });

这是我的jsp

的代码