我正在制作一个需要以JSONP格式返回数据的Web服务。我正在使用JSON taglib用于JSP,我认为所有必须添加的都是括号,但我找不到一个好的资源来验证这一点。
例如,Web服务函数使用此函数返回:
private static String getJSONPObject(String s) throws JSONException {
return "(" + new JSONObject(s) + ")";
}
这是对的吗?
谢谢!
答案 0 :(得分:23)
JSONP只是允许网络应用跨域检索数据的黑客行为。可以说它违反了Same Origin Policy (SOP)。它的工作方式是使用Javascript在页面中插入“script”元素。因此,您需要一个回调函数。如果你没有,你的Javascript将无法访问JSON对象。但是通过使用JSONP,您的Javascript代码可以调用回调函数。
所以你必须指定回调名称。所以你的功能可能如下所示:
private static String getJSONPObject(String callback, String s) throws JSONException {
return callback + "(" + new JSONObject(s) + ")";
}
答案 1 :(得分:2)
我添加了一个示例来使用Jquery和Servlet或JAX-WS Web服务来解决跨域JSONP(带有填充的Json)。
请查看这篇文章。
http://reddymails.blogspot.com/2012/05/solving-cross-domain-problem-using.html