一尘不染

正在发送JSONP与JSON数据?

json

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

例如,曾经的Web服务功能都使用以下功能返回:

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

这样对吗?

谢谢!


阅读 203

收藏
2020-07-27

共1个答案

一尘不染

JSONP只是一种黑客,它允许Web应用程序跨域检索数据。可以说它违反了同源起源策略(SOP)。它的工作方式是使用Javascript将“
script”元素插入页面。因此,您需要一个回调函数。如果您没有,则您的Javascript将无法访问JSON对象。但是,通过使用JSONP,您的Javascript代码可以调用回调函数。

因此,您必须指定回调名称。因此,您的函数可能如下所示:

private static String getJSONPObject(String callback, String s) throws JSONException {
    return callback + "(" + new JSONObject(s) + ")";
}
2020-07-27