我在从 jsp 将响应类型设置为 json 时发现了这个问题,但我需要将响应类型设置为 jsonp 以进行跨域访问。还会是这样吗:
response.setContentType("application/javascript");
并且只是将来自jsp的响应包装在callbackfunction(
+内容+)
中,还是需要做更多的事情?
我最近不得不这样做。在服务器端,我有这样的事情:
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); });
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的代码
要支持 javascript 中的跨域访问,您可以使用 $.support.cors = true;
除此之外,您可以将 jsonp 的内容类型设置为 application/javascript。