【发布时间】:2019-04-25 10:28:55
【问题描述】:
我有一个页面,可以选择通过电子邮件发送单个文件或勾选几个文件并通过电子邮件发送它们。他们都使用各自的 JavaScript 函数将此页面称为 email.jsp。
电子邮件.jsp:
String files=null;
String url=null;
String id=null;
String hash=null;
String[] array=null;
String[] split=null;
if(multiemail.equals("no")) {
//get parameters from email()
files= request.getParameter("filename");
url = request.getParameter("link");
id = request.getParameter("id");
hash = request.getParameter("hash");
}else{
split = request.getParameter("link").split(",",0);
array = request.getParameter("arrayList").split(",",0);
}
也就是说,如果是单封邮件,就取那四个参数,如果是多封邮件,就取这两个参数。到目前为止还可以。现在,一旦我得到属性,我想将参数传递给sendemail.jsp 来处理数据。
所以我的发送按钮会调用sendmessage()函数:
$.ajax({
url: 'sendemail.jsp',
type: 'POST',
data: {
recipient: recipient,
subject: subject,
content: content,
id:"<%=id%>",
hash:"<%=hash%>"
},
success: function (data) {
alert("Successfully initiated email to queue");
},
error: function (request, error) {
alert("Request: " + JSON.stringify(error));
}
});
所以在这个 ajax 中,它基本上是根据是否是一封电子邮件来传递数据。当然会奏效。但是,如果我发送多封电子邮件并单击相同的发送按钮,它会将相同的数据传递到下一页,但它不需要 id 和 hash,正如您从我的 email.jsp 中看到的那样。
现在,我不知道是否有解决方法。有没有办法可以根据条件传递数据?
【问题讨论】:
-
为什么不考虑在ajax之外初始化对象,根据条件添加id和hash键呢?然后你可以使用这个对象作为数据
-
为什么根据选择的文件数量不同而有不同的数据格式?无论选择 0 个、1 个还是多个文件,都只需使用相同的格式。 (提示:Arraylists 可以包含 1 个元素,但仍然是一个 arraylist。)基本上,与其试图过度复杂化代码来处理构造不佳的数据结构,不如使用更好的数据结构并保持代码简单。
-
@David 我不关注你的问题
-
@KrishnaPrashatt 我在 ajax 之外初始化了我的对象并使用 if 条件来指定 id/hash。然后将数据对象传递给 ajax。在另一页中,我是否以与
request.getparameter相同的方式检索该特定数据? -
@Daredevil,通过其他页面,你的意思是
Email.jsp?
标签: javascript java ajax jsp