2

我在从 jsp 将响应类型设置为 json 时发现了这个问题,但我需要将响应类型设置为 jsonp 以进行跨域访问。还会是这样吗:

response.setContentType("application/javascript");

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

4

3 回答 3

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); });
于 2012-12-21T18:15:13.597 回答
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的代码

于 2014-09-02T02:19:07.337 回答
0

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

于 2012-12-21T17:05:13.663 回答