我在jsp中将响应类型设置为json时发现this question但是我需要将响应类型设置为jsonp以进行跨域访问。它仍然是这样的:
response.setContentType("application/javascript");
只是将jsp中的响应包装在callbackfunction(
+内容+ )
中,还是需要做更多的事情?
答案 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
的代码