我有一个 Java JAX-RS 中的 REST 服务器和一个 HTML 页面。
我想通过 xmlhttp
POST 请求从 HTML 页面发送一个 JSON 数组、一个用户名和一个 accountID,方法是将它们全部设为一个大字符串,以便我可以使用该xmthttp.send()
方法。
HTML发送代码为:
function sendData() {
var req = createRequest();
var postUrl = "rest/hello/treeData";
var dsdata = $("#treeview").data("kendoTreeView").dataSource.data();
var accID = "onthespot";
var username = "alex";
req.open("post", postUrl, true);
req.setRequestHeader("Content-type","text/plain");
req.send("data=" + JSON.stringify(dsdata) + "&username=" + username + "&accID=" + accID);
req.onreadystatechange = function() {
if (req.readyState != 4) {
return;
}
if (req.status != 200) {
alert("Error: " + req.status);
return;
}
alert("Sent Data Status: " + req.responseText);
}
}
服务器 JAX-RS 代码是:
@Path("/treeData")
@POST
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
public String storeTreeData(
@QueryParam("data") String data,
@QueryParam("username") String username,
@QueryParam("accID") String accID) {
System.out.println("Data= " + data + "\nAccID= " + accID + "\nUsername= " + username);
return "Done";
}
问题是所有的变量都被打印为 null..storeTreeData
函数应该找到data
, username
,accID
变量@QueryParam
并存储它们不是吗?
有人知道这里有什么问题吗?
PS:xmlhttp请求初始化正确并建立连接但参数未在服务器上传递。