我正在使用ajax将数据传递到servlet。据我了解,标准方法通常是这样的:
IMPORTDATA
然后在jsp页面中,将这样检索数据:
$.ajax({
url: 'page.jsp',
type: 'POST',
data: {
id:value,
name:value2
},
success: function (data) {
alert("Successfully initiated email to queue");
},
error: function (request, error) {
alert("Request: " + JSON.stringify(error));
}
});
这无疑会起作用。现在,如果我想将数据存储为对象怎么办。在我的JavaScript中是这样的:
String id = request.getParameter("id");
String name = request.getParameter("name");
然后,我使用相同的方式:
var data;
if(condition){
data={
'recipient': recipient,
'subject': subject,
'content': content,
'id':"<%=id%>",
'hash':"<%=hash%>",
'multiemail':"no"
}
}else{
data= {
'recipient': recipient,
'subject': subject,
'content': content,
'arrayList':<%=array%>,
'multiemail':"yes"
}
}
$.ajax({
url: 'page.jsp',
type: 'POST',
data: {
info:data
},
success: function (data) {
alert("Successfully initiated email to queue");
},
error: function (request, error) {
alert("Request: " + JSON.stringify(error));
}
});
这将返回空值。如何准确地从对象中检索所需的数据值?
答案 0 :(得分:0)
使用下面的代码行String recipient = request.getParameter("recipient");
它会在
$.ajax({
url: 'page.jsp',
type: 'POST',
data: {
info:data
}
但是幸运的是,没有收件人,ajax中只有 info 键。 因此,您可以使用getParameter(“ info”)来获取数据。现在您有了数据。
请参考以下代码
$.ajax({
url: 'page.jsp',
type: 'POST',
data: data
我认为您现在可以使用String recipient = request.getParameter("recipient");
答案 1 :(得分:0)
request.getParameter("recipient");
将在您的数据中查找收件人密钥。但是您的密钥是info
而不是recipient
(这是信息的一部分)。要访问收件人,您必须先使用任何JSON解析库解析收到的JSON(request.getParameter("info")
),然后从已解析的JSON对象访问收件人。
在您的ajax中,以json格式传递数据
$。ajax({
url: 'page.jsp',
type: 'POST',
dataType: 'JSON',
data: {
info:data
},
success: function (data) {
alert("Successfully initiated email to queue");
},
error: function (request, error) {
alert("Request: " + JSON.stringify(error));
}
});
在您的servlet端,像这样解析json:
JsonParser parser = new JsonParser();
String json = request.getParameter("info");
JsonElement jsonTree = parser.parse(json);
String recipientjsonTree.get("recipient");
JsonParser
是GSON库的一部分。