1

我对 JSONP 有点了解……但感觉我还是很笨。我创建了以下页面,它应该通过我的 web 服务以 JSON 表示法获取信息:

<html>
<head>
<title> SomeHtml Form </title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">
function getParameters(){
    $.getJSON('http://localhost:8080/test/services/export/getuser.mvc?callback=?',function(res){
        alert('Your name is '+res.lname);
    });
}
</script>
</head>

<body >
    <button onclick="getParameters();">Get Name</button>
</body>
</html>

我在 Liams 的帮助下创建了这个主题评论:简单的 jQuery、PHP 和 JSONP 示例?

更新 13-07-2012 15:06 我设法从我的 Servlet 中获得了正确的结果,但现在我从接收网站收到了一个不同的错误(“错误:未定义资源”)。对于我的 JSONP 数据,正确的密钥是什么,以便站点可以读取它?

另一方面,我有一个使用 SPRING 和 Java Servlet 的 Web 服务,它被$.getJSON('http://localhost:8080/test/services/export/getuser.mvc?callback=?',...) 此服务调用,如下所示:

@Controller
@RequestMapping("/services/export/")
public class AccountServiceProviderController extends ProfileDashboardController {

    private static final String DESC_NAME = "ACCOUNT SERVICE PROVIDER CONTROLLER";


    @RequestMapping("/getuser")
    public @ResponseBody
    JSONPObject list(final HttpServletResponse response) {

        return new JSONPObject("res", getJson());

    }

    public JSONObject getJson() {
        User user = getCurrentUser();

        // logger.debug("ID: " + id);

        // json
        JSONObject json = new JSONObject();
        json.put("lname", user.getLastName());
        json.put("fname", user.getFirstName());

        logger.info(json.toString());
        return json;

    }

}

不幸的是,我从来没有收到警报。我做错什么了?

更新 此错误消息:“未找到资源”是什么意思。它有什么名字才能被发现?

4

1 回答 1

3

好的...我发现了错误。如果您声明了以下内容,则上述代码有效:

  response.setContentType("text/javascript; charset=UTF-8");

完整的工作代码如下所示(Servlet):

@Controller
@RequestMapping("/secure/profile/services/export/")
public class AccountServiceProviderController extends ProfileDashboardController {

    private static final String DESC_NAME = "ACCOUNT SERVICE PROVIDER CONTROLLER";


    @RequestMapping("/getuser")
    public @ResponseBody
    JSONPObject list(@RequestParam("callback") final String callback, final HttpServletResponse response) {

        response.setContentType("text/javascript; charset=UTF-8");

        return new JSONPObject(callback, getJson());

    }

    public JSONObject getJson() {
        User user = getCurrentUser();
        JSONObject json = new JSONObject();

        // User muss eingeloggt sein
        if (user != null) {
            json.put("lname", user.getLastName());
            json.put("fname", user.getFirstName());

            logger.info("Daten werden exportiert: " + json.toString());
            return json;
        }
        return null;

    }

}
于 2012-07-16T07:04:39.443 回答