如何在 Java 中获取 AJAX 值

How to get AJAX values in Java

我正在对我的服务器进行 ajax 调用,需要从中获取值。这是怎么做到的?

这是ajax

$.ajax({
    type: "POST",
    url: "http://localhost:8080/myapp/etc",
    contentType: "application/json; charset=utf-8",
    data: {"id": "1", "somekey": "somevalue"},
    dataType: "json",
    async: "true",
    success: function(msg) {
        alert("success " + msg);
    },

    error: function(msg) {
        alert("error " + msg.toString());
    }
});

我正在与 Restlets 合作,所以我假设这些值将在 Representation 实体中。这是方法:

@Post
public Representation doPost(Representation entity) {
    String et = java.net.URLDecoder.decode(entity.getText(), "UTF-8");
    System.out.println("the entity text " + et);
}

这会打印出 "id": "1", "somekey": "somevalue"。但是我如何获得其他值呢? asyncurl 等等?

async 是一个客户端指令,告诉客户端在处理 ajax 调用时不要阻塞。服务器不知道也不关心这个。

获取 URL 是可能的服务器端使用 String url = ((HttpServletRequest)request).getRequestURL().toString();

Restlet 会让您访问请求中发送的元素(URL、headers、有效负载),但不会访问 client-side 配置属性以构建请求。

您可以使用 Chome 控制台或 Firebug 等工具查看 AJAX 呼叫请求中发送的内容。

属性 async 未在请求中发送,因此您无法从服务器端获取它。对于 URL,您可以在服务器资源中使用此代码:

Reference reference = getRequest().getResourceRef();
String url = reference.toString();

有关更多详细信息,请查看 class Reference: http://restlet.com/technical-resources/restlet-framework/javadocs/2.1/jee/api/org/restlet/data/Reference.html 的 javadoc。 class 允许您访问其中的每个元素(主机域、端口、路径...)。

希望对你有帮助, 蒂埃里

你可以这样做,使用 org.restlet.ext.json 扩展名:

@Post
public Representation handle(JsonObject jo) {
    System.out.println(jo.getString("id"));
    System.out.println(jo.getString("somekey"));
    return ...;
}