发送JSONP与JSON数据?

时间:2011-01-13 17:26:42

标签: java web-services json jsonp

我正在制作一个需要以JSONP格式返回数据的Web服务。我正在使用JSON taglib用于JSP,我认为所有必须添加的都是括号,但我找不到一个好的资源来验证这一点。

例如,Web服务函数使用此函数返回:

private static String getJSONPObject(String s) throws JSONException {
    return "(" + new JSONObject(s) + ")";
}

这是对的吗?

谢谢!

2 个答案:

答案 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